Board logo

標題: [發問] 關於第2位元非數字則自動補1個0 [打印本頁]

作者: starry1314    時間: 2015-9-8 09:02     標題: 關於第2位元非數字則自動補1個0

如何改寫成第2位元非數字則往左補0並於M欄覆蓋填上

以下為不足7位元則自動往左把0補滿
Sub yy()

For i = 2 To 20
If Range("M" & i) <> Len("00000") Then  '
A = Range("M" & i)
MsgBox String(7 - Len(A), "0") & A
Else

End If
Next
End Sub
作者: 准提部林    時間: 2015-9-8 10:11

回復 1# starry1314


請舉出幾個不同狀況實例及希望的結果!
最好上附檔!
作者: starry1314    時間: 2015-9-8 11:30

回復 2# 准提部林
[attach]21926[/attach]
[attach]21925[/attach]

    已附上範例及希望取得結果,麻煩大大了
作者: 准提部林    時間: 2015-9-8 12:19

回復 3# starry1314

若只是要取出〔月份〕的英文代碼
B2公式:=MID(A3,2+COUNT(-LEFT(A3,2)),1)

這公式非陣列運算,應還可以,
若不想留太多公式,可保留B2公式,下拉一格,再以B3右下角黑十字下刷到底,然後選擇性貼上〔值〕!

或以VBA刷公式:
Sub TEST()
Dim R&
R = Cells(Rows.Count, 1).End(xlUp).Row
If R < 3 Then Exit Sub
With Range("B3:B" & R)
   .Formula = "=MID(A3,2+COUNT(-LEFT(A3,2)),1)"
   .Value = .Value
End With
End Sub

注意:附檔中A欄下方的說明文字要先清除,以免 End(xlUp).Row 多抓了幾行!
 
作者: 准提部林    時間: 2015-9-8 12:37

回復 3# starry1314

將原編號〔月份〕為個位數的加〔前導0〕:
Sub TEST2()
Dim R&, Arr, i&
R = Cells(Rows.Count, 1).End(xlUp).Row
If R < 3 Then Exit Sub
With Range("A3:A" & R)
   Arr = .Cells
   For i = 1 To UBound(Arr)
     If Not IsNumeric(Left(Arr(i, 1), 2)) Then Arr(i, 1) = 0 & Arr(i, 1)
   Next i
   .Cells = Arr
End With
End Sub
作者: starry1314    時間: 2015-9-8 12:44

回復 4# 准提部林
感謝指導~思路真好
遇到空白列也可使用
作者: starry1314    時間: 2015-9-8 13:02

回復 4# 准提部林


    想請問
=MID(A3,2+COUNT(-LEFT(A3,2)),1)

LEFT(A3,2) 在你提供的公式內是會將 12計算成2位元嗎?
我直接單獨在儲存格測試, A1 LEFT(A3,2)  =  12
                                              A2 COUNT(A1,1) = 1
                                             A2 COUNT(A1,1) = 0
不太理解怎麼計算的
作者: starry1314    時間: 2015-9-8 13:32

回復 4# 准提部林
"=MID(A3,2+COUNT(-LEFT(A3,2)),1)"
理解了~搭配 2+ 就達成效果了
學到一招感謝
作者: 准提部林    時間: 2015-9-8 13:32

回復 7# starry1314


=COUNT(-LEFT(A3,2)) 是判斷〔前2位〕是否為〔數值〕,
9A???? 不是,為0,用MID("9A???",2,1)
12A??? 是,為1,用MID("12A???",3,1)

MID 第2參數,就用 2+COUNT(-LEFT(A3,2)) 來判斷!
 
作者: starry1314    時間: 2015-9-8 13:33

回復 9# 准提部林

感謝指導~!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)