
No.3ベストアンサー
- 回答日時:
No1です。
>大変図々しいですが、VBAも教えてもらえますか?
方法はいろいろあると思いますが、以下は一例です。
※ D2以降に記入するだけの処理にしてありますので、事前にクリア等
が必要なら追加してください。
※ また、担当名は出現順となりますので、並べ替え等が必要な場合は
追加してください。
Sub Q13022513()
Dim d, v, tmp, t, r As Range
Dim i As Long, j As Long, sep As String
sep = Chr(27)
Set r = Range(Cells(2, 1), Cells(Rows.Count, 2).End(xlUp))
If r(1).Row < 2 Then Exit Sub
v = r.Value
Set d = CreateObject("Scripting.Dictionary")
For i = LBound(v) To UBound(v)
tmp = Split(v(i, 2), ",")
For j = LBound(tmp) To UBound(tmp)
t = Trim(tmp(j))
If t <> "" Then
If d.Exists(t) Then d(t) = d(t) & sep & v(i, 1) Else d.add t, v(i, 1)
End If
Next j
Next i
Set r = Cells(2, 4)
v = d.keys
For i = LBound(v) To UBound(v)
t = Split(v(i) & sep & d(v(i)), sep)
r.Resize(, UBound(t) + 1).Value = t
Set r = r.Offset(1)
Next i
End Sub
No.6
- 回答日時:
失礼しました。
EXCEL2019で検証し、送信時のPCが2013を使用し式をコピペしたので、
_xlfn.TEXTJOINとなっていました。
TEXTJOINが正です。配列数式なのでCtr+Shift+Enterで式確定をしてください。
D2=LEFT(TEXTJOIN("\",1,REPT(IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""),COUNTIF($D$1:D1,IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""))=0))&"\",FIND("\",TEXTJOIN("\",1,REPT(IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""),COUNTIF($D$1:D1,IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""))=0))&"\")-1)1),""))=0))&"\")-1)
No.5
- 回答日時:
№4です。
先の回答はABC、あいう等の1文字しか対応していなかったので、実務に合わせた数式を頭を捻って考えました。EXCEL2019以降に対応します。大変長いです。
TRANSPOSE(ROW($1:$5))の数式部分は担当欄がMaxで5名までを意味します。
D2=LEFT(_xlfn.TEXTJOIN("\",1,REPT(IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""),COUNTIF($D$1:D1,IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""))=0))&"\",FIND("\",_xlfn.TEXTJOIN("\",1,REPT(IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""),COUNTIF($D$1:D1,IFERROR(MID($B$2:$B$5,FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5)))),FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))+1))-FIND("♪",SUBSTITUTE(","&$B$2:$B$5&",",",","♪",TRANSPOSE(ROW($1:$5))))-1),""))=0))&"\")-1)
配列確定(Ctr+Shift+Enter)し、下へフィルコピー
No.4
- 回答日時:
D列を自動作成する数式になります。
(ローテクで長いです)D1=CHAR(MIN(INDEX(CODE(MID(
SUBSTITUTE($B$2:$B$5,",",""),
ROW(OFFSET($A$1,,,,LEN(SUBSTITUTE($B$2:$B$5,",","")))),
1)),0)))
D2=IF(ISNA(INDEX(MID(
SUBSTITUTE($B$2:$B$5,",",""),
ROW(OFFSET($A$1,,,,LEN(SUBSTITUTE($B$2:$B$5,",","")))),
1),MATCH(0,COUNTIF(D$2:D2,"="&MID(
SUBSTITUTE($B$2:$B$5,",",""),
ROW(OFFSET($A$1,,,,LEN(SUBSTITUTE($B$2:$B$5,",","")))),
1)),0))),"",INDEX(MID(
SUBSTITUTE($B$2:$B$5,",",""),
ROW(OFFSET($A$1,,,,LEN(SUBSTITUTE($B$2:$B$5,",","")))),
1),MATCH(0,COUNTIF(D$2:D2,"="&MID(
SUBSTITUTE($B$2:$B$5,",",""),
ROW(OFFSET($A$1,,,,LEN(SUBSTITUTE($B$2:$B$5,",","")))),
1)),0)))
配列確定(Ctr+Shift+Enter)し、下へフィルコピー
No.2
- 回答日時:
PowerQueryでやればいいと思いますけど。
担当列をカンマ指定で列の分割
分割した列を選択して列のピボット解除
値列で行のグループ化
グループ化したテーブルにインデックス列を追加
グループ列から品名・インデックス列を展開
インデックス列を指定して列のピボット(値列「品名」で集計はしない)
インデックス列の追加以外は機能を選択するだけでできます。
インデックス列は行のグループ化の時に「each _」を
「each Table.AddIndexColumn(_, "インデックス", 1, 1)」に
変更すればいいです。

「PowerQuery」
すぐに使える環境がなかったので、まだ確認できていませんが、
是非時間を作ってPowerQueryを身に着けたいと思いました。
ありがとうございます。
No.1
- 回答日時:
こんにちは
ご提示のレイアウトで、E2セルに
=IFERROR(IF($D2="","",INDEX($A:$A,AGGREGATE(15,6,ROW(A$2:A$6)/NOT(ISERROR(FIND($D2,$B$2:$B$5))),COLUMN(A1)))),"")
の式を入力し、右方、下方にフィルコピー。
では、いかがでしょうか?
※ D列も自動作成したいような場合は、関数で行うよりも、VBAの方が簡単だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
2列のエクセルの表を変更したい
Excel(エクセル)
-
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
至急!!!エクセルについて
Excel(エクセル)
-
4
Excelで、行に複数の数字が入力されているセルが複数の列存在し、行を跨いでセル内の数値を並び替える
Excel(エクセル)
-
5
別シートに毎回異なるデータをコピーする
Excel(エクセル)
-
6
excel でグループの最後に行を追加。
Excel(エクセル)
-
7
エクセルの昇順での数値入力のミスの見つけ方を教えてください。
Excel(エクセル)
-
8
エクセルで年月日の桁数を揃えるには
Excel(エクセル)
-
9
文字列を数式として変換する事はできますか?
Excel(エクセル)
-
10
エクセル関数について COUNTIF( )+ COUNTIF( ) のように条件を2つにしたいのです
Excel(エクセル)
-
11
Excelでの質問です。 画像であるような内容のものを作りたいのですが、問題文と答えを出すため関数な
Excel(エクセル)
-
12
エクセルに詳しい方 よく読んでからのご回答お願いします 外部からデータが来ますが、日付が202201
Excel(エクセル)
-
13
Excelの文字入力にタイムラグがある時の原因と対処法
Excel(エクセル)
-
14
【Excel】歯抜けデータの集約
Excel(エクセル)
-
15
Excelでの2つの条件を指定した計算について、躓いてしまったので助けて下さい。
Excel(エクセル)
-
16
エクセルで時間の合計
Excel(エクセル)
-
17
エクセルはマクロを使用するのでパソコンに良くないので使用しないでと言われた。「なぜ?」
Excel(エクセル)
-
18
2つのVBAを一緒にしたら機能しなくなりました(エクセル)
Excel(エクセル)
-
19
Excel2016 行間を詰めたい&同じカテゴリなら上位2つだけを表示したい
Excel(エクセル)
-
20
Excel複数シートから日付と文字を取り出して日付順に並べたいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
あるセルに特定の文字列を打つ...
-
5
EXCELで2つの数値のうち大きい...
-
6
(Excel)あるセルに文字を入力...
-
7
エクセルのセル内の余白の設定...
-
8
エクセルで作った新しいウイン...
-
9
EXCELで2列を参照し、重複する...
-
10
グラフの横・縦項目が全部表示...
-
11
エクセルのセル内に全角数字を...
-
12
Excel 書式を関数で判断。
-
13
エクセル: セルの枠を超えて表示
-
14
エクセルの2ページ目の作り方
-
15
Excel に貼り付けた図形が、保...
-
16
特定セルの内容を更新したら、...
-
17
EXCELで特定のセルに表示...
-
18
エクセルの画面で十字マークが...
-
19
エクセルウィンドウのサイズ変...
-
20
エクセル:シート名を手入力で...
おすすめ情報
公式facebook
公式twitter
ありがとうございます!出来ました!
AGGREGATE関数、知りませんでした。。。
あとで頑張って読み解きます。
そうなんです。
D列も自動作成できればもっと有難いです!
大変図々しいですが、VBAも教えてもらえますか?