返回列表 上一主題 發帖

[發問] 關於第2位元非數字則自動補1個0

[發問] 關於第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

回復 1# starry1314


請舉出幾個不同狀況實例及希望的結果!
最好上附檔!

TOP

回復 2# 准提部林

取得編號代碼.rar (6.99 KB)

    已附上範例及希望取得結果,麻煩大大了

TOP

回復 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 多抓了幾行!
 

TOP

回復 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

TOP

回復 4# 准提部林
感謝指導~思路真好
遇到空白列也可使用

TOP

回復 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
不太理解怎麼計算的

TOP

回復 4# 准提部林
"=MID(A3,2+COUNT(-LEFT(A3,2)),1)"
理解了~搭配 2+ 就達成效果了
學到一招感謝

TOP

回復 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)) 來判斷!
 

TOP

回復 9# 准提部林

感謝指導~!!

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題