[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カンマ区切りを複数列同時に行方向に分割するには?』(としぞー)
カンマで区切られている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
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
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.