Re: [算表] 將數字分隔?

看板Office作者 (David)時間16年前 (2008/01/23 16:33), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串6/7 (看更多)
※ 引述《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
文章代碼(AID): #17bllTN6 (Office)
討論串 (同標題文章)
文章代碼(AID): #17bllTN6 (Office)