返回列表 上一主題 發帖

[發問] 拆出數字後自動往下插列並填滿

[發問] 拆出數字後自動往下插列並填滿

各位前輩好!
請問有辦法讓B欄+號分離後數字往下插列並填滿嗎(如同附檔這樣),
假設B2=2+3+4+5, 用Split可以分離+號,但如果要在B2將數字往下插列並填滿,
並且遇到空格或其他不動作,只計算有+號的資料
這樣不知道怎寫比較好...
求助各位幫忙解答,
謝謝大家。

拆出數字.rar (6.96 KB)

回復 1# shuo1125

試試看
Sub ex()
Dim a As Variant, x As Variant, y%
For Each a In Range([b2], [b65535].End(3))
If a <> "" Then
   x = Split(a, "+")
   [F2].Offset(y).Resize(UBound(x) + 1) = Application.Transpose(x)
   y = y + UBound(x) + 1
Else
   y = y + 1
End If
Next
End Sub

TOP

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 2# jcchiang
感謝J大,可以用!
我在理解一下程式碼
有時候單懂用處邏輯也不見得寫得出來....
不知道有沒有什麼相關書籍及知識可以增加自己邏輯編寫的能力
真是佩服至極!!

TOP

回復 2# jcchiang
J大 不好意思想在請問一下
如果我想把拆出的數字,直接在E欄向下插列填滿(向黃標那樣)
請問用Insert要怎麼改寫...
可以再麻煩指導一下嗎
謝謝!!

1264.rar (157.48 KB)

TOP

回復 3# hcm19522
不好意思 比較偏向寫在VB
也謝謝你~

TOP

回復 5# shuo1125

Sub ex1()
Dim a%, x As Variant
a = 2
Do While Cells(a, 2) <> "" Or Cells(a, 5) <> ""
   x = Split(Cells(a, 5), "+")  
   If UBound(x) > 0 Then     '判斷數值組數
      Rows(a).Offset(1).Resize(UBound(x)).Insert
      Cells(a, 5).Resize(UBound(x) + 1) = Application.Transpose(x)
      a = a + UBound(x)
   End If
a = a + 1
Loop
End Sub

TOP

回復 7# jcchiang
感謝J大
完全符合需求!!

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題