Re: [算表] 將數字分隔?
※ 引述《Lazulite (Trade Off)》之銘言:
: ※ 引述《xdtg (自由魔法)》之銘言:
: : A
: : 1 1234
: : 2 1111
: : 3 10000
: : Sheet2
: : A B C D E F G
: : 1 7 6 5 4 3 2 1
: : 2
: : A2=RIGHT(IF(INT(Sheet1!$A1/10^(A$1-1))=0,"",INT(Sheet1!$A1/10^(A$1-1))))
: : 其餘類推
依照原題的意思
: 可以試試VBA
: Sub test()
: For j = 1 To WorksheetFunction.CountA(Sheets("sheet1").Range("A:A"))
: For i = 1 To Len(Sheets("Sheet1").Cells(j, 1))
: Sheets("sheet2").Cells(j, i) = Mid(Sheets("Sheet1").Cells(j, 1), i, 1)
^這裡應該是
Sheets("sheet2").Cells(j, i + 6 - Len(Sheets("Sheet1").Cells(j, 1))) = Mid(...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
其中6是比SHEET1 A:A中最大位數 還大的一個數
例如A欄中有-12.3,是最長的數字(5位) 就可用6
但是在VBA中不知道如何取得SHEET1中最長位數是多少
另外,為了達成SHEET1輸入數字sheet2數字就自行更動
還要加上一些東西
像是IF SHEET1!a:a 有輸入數字 THEN 執行巨集 ?
缺點是不能復原(?)
: Next i
: Next j
: End Sub
sti571板友用mid
=MID(Sheet1!$A2,A$1,1)
^^^這部分可以改用column(A1)或column(A:A)
就不用另設一列數字了^^
原題要這些數字都靠右對齊
所以才要改上面的VBA,這裡的MID也是
全式是
{=MID(Sheet1!$A1,LEN(Sheet1!$A1)-MAX(LEN(Sheet1!$A$1:$A$99))-1+COLUMN(A:A)
+9^9*(COLUMN(A:A)<=MAX(LEN(Sheet1!$A$1:$A$99))+1-LEN(Sheet1!$A1)),1)}
陣列公式的原因是MAX(LEN(Sheet1!$A$1:$A$99))
求最大位數
定義為名稱LenA
=MAX(LEN(Sheet1!$A$1:$A$99))+1
本式寫在哪裡都可以(除了sheet1的a欄)
為了易讀,寫在sheet1 b1
=MID($A1,LEN($A1)-LenA+COLUMN(A:A)+99*(COLUMN(A:A)<=LenA-LEN($A1)),1)
99那一項是判斷錯誤值用的
也可用
=IF(COLUMN(A:A)<=LenA-LEN($A2),"",MID($A2,LEN($A2)-LenA+COLUMN(A:A),1))
寫好後剪下貼上到哪裡都可
2007就用
=IFERROR(MID($A1,LEN($A1)-LenA+COLUMN(A:A),1),"")
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.192.145
推
01/23 17:00, , 1F
01/23 17:00, 1F
討論串 (同標題文章)