[[20210915170439]] 『コード毎にセル内容をまとめる方法』(セル) ページの最後に飛ぶ

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

 

『コード毎にセル内容をまとめる方法』(セル)

下記の様なデータ処理を手作業で行っておりますが
データ量も増えてきた為、かなり大変な作業になりまして
何か良い方法があればご教授頂きたいと思い投稿させて頂きました。

  A列(コード)・B列(空白)・C列(空白)・D列(備考)・E列・F列
1  11111                内容   
2  11111                内容
3  22222                内容
4  22222                内容
5  22222                内容  
6  22222                内容
7  33333                内容
8  33333                内容
9  33333                内容
10  33333                内容




上記の様なデータのD列(備考)ですが、社名や品番など複数の内容を
1つのセルに纏めたものになります。
その為まずE列・F列にそれぞれ社名(3パターン)と品番を抽出しています。
作業は現状フラッシュフィルで抽出している為、ここまでは楽です。

 A列(コード)・〜 E列(社名)・F列(品番) ※E.F列はフラッシュフィルでD列カラ抽出
1 11111      A社    AAA-000
2 11111      A社    AAA-001
3 22222      A社    AAA-002
4 22222      A社    AAA-003
5 22222      B社    BBB-001
6 22222      B社    BBB-002
7 33333      A社    AAA-001
8 33333      A社    AAA-002
9 33333      B社    BBB-001
10 33333      C社    CCC-001



この後、A列のコードと抽出したE列の社名毎に
F列の品番を1つのセルに手作業でG列にまとめています。
この際、品番毎の間に "," を入力しております。
下記が手作業完了後の様な見本です。

 A列(コード)・〜 E列(社名)・F列(品番) ・G列(まとめ)
1 11111      A社    AAA-000  AAA-000,AAA-001
2 11111      A社    AAA-001
3 22222      A社    AAA-002  AAA-002,AAA-003
4 22222      A社    AAA-003
5 22222      B社    BBB-001  BBB-001,BBB-002
6 22222      B社    BBB-002
7 33333      A社    AAA-001  AAA-001,AAA-002
8 33333      A社    AAA-002
9 33333      B社    BBB-001  BBB-001
10 33333      C社    CCC-001  CCC-001



この手作業の工程を自動化出来ればと思っておりますが
何かいい方法などご教授頂ければ幸いです。

拙い説明で恐縮ですが、
宜しくお願い致します。

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


Power Queryを勉強してはどうでしょうか。
G列だけでなく、E.F列への抽出もたぶん可能です。

(マナ) 2021/09/15(水) 23:18


>マナ様
ご回答頂きありがとうございます。
ご提案頂いた通り作業工程をクエリで自動化させたいのですが、
関数も初心者でして、上記のG列に入れている項目は目視でコピペして対応している状況なのですが、
A列&E列で条件にあうF列の品番を一行にまとめる動作は関数などで対応可能でしょうか?
IFやCONCATENATEで試してみたのですが、上手く機能しませんでした・・・

上記アドバイス頂けると幸いです。
宜しくお願い致します。

(セル) 2021/09/16(木) 13:27


Sub main()
    Dim v(), m As Long, mx As Long, r As Range
    Range("G:G").Cells.ClearContents
    Set r = Range("A" & Rows.Count).End(xlUp)
    Do
        DoEvents
        m = WorksheetFunction.CountIfs(r.Offset(-r.Row + 1).Resize(r.Row), r.Value, r.Offset(-r.Row + 1, 4).Resize(r.Row), r.Offset(, 4).Value)
        mx = WorksheetFunction.CountIfs(r.EntireColumn, r.Value, r.Offset(, 4).EntireColumn, r.Offset(, 4).Value)
        ReDim Preserve v(mx - 1)
        v(m - 1) = r.Offset(, 5).Value
        If m = 1 Then r.Offset(, 6).Value = Join(v, ","): Erase v
        If r.Row = 1 Then Exit Do
        Set r = r.Offset(-1)
    Loop
End Sub
(mm) 2021/09/16(木) 17:05

>mm様
マクロを作成頂いてありがとうございます。
動作についても思い描いていた動作になり
非常に感動致しました。

しかし私の方で見落としていたのですが
データの1行目にはヘッダーが入っており
マクロ起動時に下記でエラーになってしまいました。

ReDim Preserve v(mx - 1)

指定のセルに値が入っていない?とのエラーだと思いますが
どのように修正すれば2行目から処理可能でしょうか?

お手数お掛けして誠に申し訳ございません。
(セル) 2021/09/16(木) 18:22


コメント返信:

[ 一覧(最新更新順) ]


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