返回列表 上一主題 發帖

[發問] 如何拆分同一欄位內的資料

回復 10# samwang
Dear samwang,
太感謝你的幫忙囉,解決我的困擾。
學習了
Just do it.

TOP

本帖最後由 ML089 於 2021-7-6 09:34 編輯

回復 4# jsc0518
(1)KY-09030E
(2)KA-09032E
(3)WW-01234E
(4)WX-987852
當資料固定長度時可以簡化公式如下

C1公式 =IFERROR(MID($A1,FIND("("&COLUMN(A1)&")",$A1)+6,6),"")
改為
C2公式 =IFERROR(MID($A2,FIND("("&COLUMN(A2)&")",$A2)+6,6),"")
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 12# ML089
Dear ML089,
早安!感謝你的回覆與指導。

想與您請教一下
像一個欄位中放了很多資料(用ALT+ENTER的方式登錄資料),公式是哪一個語法去判斷的
另外,當C1、D1放入公式後,又是哪一公式語法去判斷C1已經捉過的資料D1不會再重複捉過

=IFERROR(MID($A1,FIND("("&COLUMN(A1)&")",$A1)+6,6),"")
Just do it.

TOP

回復 10# samwang
Dear samwang,
下午好,請教一下:若拆分的資料是跳格的,那語法要怎麼修改?
Just do it.

TOP

回復 14# jsc0518


請測試看看,謝謝

Sub test()
Dim Arr, a
Arr = Range([C1], [C65536].End(3))
For i = 2 To UBound(Arr)
    a = Split(Arr(i, 1), Chr(10))
    k = 0
    For j = 0 To UBound(a)
        Cells(i, 5 + j + k) = Split(a(j), "-")(1)
        k = k + 1
    Next
Next
End Sub

TOP

回復 15# samwang
Dear samwang,
太感謝你囉!幫我好多的忙,可以用、正常!!
謝謝你:) :)
Just do it.

TOP

回復 13# jsc0518

回復 12# ML089
Dear ML089,
早安!感謝你的回覆與指導。

想與您請教一下
像一個欄位中放了很多資料(用ALT+ENTER的方式登錄資料),公式是哪一個語法去判斷的
另外,當C1、D1放入公式後,又是哪一公式語法去判斷C1已經捉過的資料D1不會再重複捉過

=IFERROR(MID($A1,FIND("("&COLUMN(A1)&")",$A1)+6,6),"")


你的資料要分段是以 (1)......(2)......(3).....,所以用 COLUMN(A1)=1 右拉公式時就會變成 COLUMN(B1)=2   COLUMN(C1)=3,再用FIND找出位置
這公式只能適用於 1~9
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 17# ML089
Dear ML089,
晚上好!感謝您回復,學習囉!
Just do it.

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列,學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, Z, N&, M&, i&
'↑宣告變數
Brr = Range([A1], [A65536].End(3))
'↑令Brr變數是二維陣列,以A欄儲存格值帶入
ReDim Crr(1 To UBound(Brr), 1 To 1000)
'↑宣告Crr變數是二為空陣列,縱向範圍同Brr陣列,橫向範圍從1 到1000
For i = 1 To UBound(Brr)
'↑設順迴圈
   If Brr(i, 1) = "" Then GoTo i01
   '↑如果陣列值是空的!就跳到標示 i01位置繼續執行
   N = 0
   '↑令N變數歸零
   For Each Z In Split(Brr(i, 1), vbLf)
   '↑設逐項迴圈!令Z變數是字串被跳行字元分割成的一維陣列子
      N = N + 1
      '↑令N變數累加 1
      If Z = "" Then GoTo z01
      '↑如果Z變數是空的!就跳到標示z01位置繼續執行
      If InStr(Z, "-") Then
      '↑如果Z變數裡有包含"-"字元?
         Crr(i, (N - 1) * 2 + 1) = Split(Z, "-")(1)
         '↑令Z變數將"-"字元右方的字串寫入 Crr陣列
         Else
            Crr(i, (N - 1) * 2 + 1) = Z
            '↑否則就令 Z變數字串寫入 Crr陣列
      End If
      If N > M Then M = N
      '↑探測Crr陣列橫向需要多少欄數
z01: Next
i01: Next
With [H1].Resize(UBound(Crr), (M - 1) * 2 + 1)
   .EntireColumn.ClearContents
   '↑將結果欄舊資料清除
   .Value = Crr
   '↑令Crr陣列值帶入儲存格
End With
Erase Brr, Crr
'↑釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題