Board logo

標題: [發問] 拆出數字後自動往下插列並填滿 [打印本頁]

作者: shuo1125    時間: 2021-3-3 21:13     標題: 拆出數字後自動往下插列並填滿

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

回復 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
作者: hcm19522    時間: 2021-3-4 12:59

https://blog.xuite.net/hcm19522/twblog/589642825
作者: shuo1125    時間: 2021-3-4 20:10

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

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

回復 3# hcm19522
不好意思 比較偏向寫在VB
也謝謝你~
作者: jcchiang    時間: 2021-3-5 08:47

回復 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
作者: shuo1125    時間: 2021-3-5 19:16

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




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