[[20220613203800]] 『カンマ区切りを複数列同時に行方向に分割するには』(としぞー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『カンマ区切りを複数列同時に行方向に分割するには?』(としぞー)

カンマで区切られている2列の列を行方向へ同時に分割したい。

変更前

    A             B      
aaa,bbb,ccc     9,5,3
eee,fff,ggg     4,1,3
↓
変更後
A     B
aaa   9
bbb   5
ccc   3
eee   4
fff   1
ggg   3

< 使用 Excel:Office365、使用 OS:Windows10 >


マクロでよければ
 Option Explicit

 Sub test()
    Dim dic As Object
    Dim v, j As Long, k As Long
    Dim s1, s2

    Set dic = CreateObject("scripting.dictionary")
    v = Cells(1).CurrentRegion.Value

    For j = 1 To UBound(v)
        s1 = Split(v(j, 1), ",")
        s2 = Split(v(j, 2), ",")
        For k = 0 To UBound(s1)
            dic(dic.Count) = Array(s1(k), s2(k))
        Next
    Next

    v = Application.Transpose(Application.Transpose(dic.items))
    Worksheets.Add.Cells(1).Resize(dic.Count, 2).Value = v

 End Sub

(マナ) 2022/06/13(月) 21:21


 A列のデータを1度メモ帳に張り付ける。
 それをコピーし直して、ワードに張り付け、
 置き換え文字「,」
 置き換え後の文字「^p」
 で置き換え。
 それをコピーしてエクセルに張り付け。

 B列も同じようにする。
(BJ) 2022/06/13(月) 21:22

Power Queryだと

 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    削除された列 = Table.RemoveColumns(ソース,{"列2"}),
    区切り記号による列の分割 = Table.ExpandListColumn(Table.TransformColumns(削除された列, {{"列1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "列1"),
    追加されたインデックス = Table.AddIndexColumn(区切り記号による列の分割, "インデックス", 0, 1, Int64.Type),
    ソース2 = ソース,
    削除された列1 = Table.RemoveColumns(ソース2,{"列1"}),
    区切り記号による列の分割1 = Table.ExpandListColumn(Table.TransformColumns(削除された列1, {{"列2", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "列2"),
    追加されたインデックス1 = Table.AddIndexColumn(区切り記号による列の分割1, "インデックス", 0, 1, Int64.Type),
    マージされたクエリ数 = Table.NestedJoin(追加されたインデックス, {"インデックス"}, 追加されたインデックス1, {"インデックス"}, "追加されたインデックス1", JoinKind.LeftOuter),
    #"展開された 追加されたインデックス2" = Table.ExpandTableColumn(マージされたクエリ数, "追加されたインデックス1", {"列2"}, {"列2"}),
    削除された列2 = Table.RemoveColumns(#"展開された 追加されたインデックス2",{"インデックス"})
 in
    削除された列2

(マナ) 2022/06/13(月) 21:45


D,E列に出力するとして

 Public Sub test3()
    Dim ary
    With Cells(1).CurrentRegion
        ary = Application.Transpose(.Columns(1).Value)
        ary = Application.Transpose(Split(Join(ary, ","), ","))
        Cells(1, "D").Resize(UBound(ary)).Value = ary
        ary = Application.Transpose(.Columns(2).Value)
        ary = Application.Transpose(Split(Join(ary, ","), ","))
        Cells(1, "E").Resize(UBound(ary)).Value = ary
    End With
 End Sub

(hatena) 2022/06/13(月) 23:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.