質問表現がわかりにくかった。それで推測して、やってみた。
ーー
右テーブルにあたるもの
A2:B7に
1 A
2 B
2 B
3 A
3 C
3 C
A列に直前と同じだからと言って、空白セルにするのは、Excelでは
複雑になる素。見やすいからだろうが、こういうデータを作るのはエクセルの経験がすくない人のやること。(書式で空白にすしたのなら、セルの値は入っているのでよいが)それで同じ値を入れた例にする。
c2:F5に完成系 0のセルを空白にするのは略。
A B C
1 1 0 0
2 0 2 0
3 1 0 2
D2の式は、=COUNTIFS($A:$A,$C3,$B:$B,D$2)
縦と横方向に式を複写。
ここまでは、質問者は、簡単だとして、質問してない内容。
しかし、本当に簡単だったかな?
===
左のデータから右の表を作る。
関数では面倒くさい。小生も、考えると何時間かかるか。
長い式の回答になると思いが、もし回答が出たら、以下の本回答は無視して。
標準モジュールに
Sub test05()
Set sh = Worksheets("Sheet1")
k = 1
For Each cl In sh.Range("D3:f5")
If cl <> 0 Then ’空白でないセルだけ処理
'MsgBox cl
For j = 1 To cl ’セル数値回だけ繰り返す
sh.Cells(k, "H") = cl.Row() - 2 'データが第3行目から始まるので,マイナス2
sh.Cells(k, "I") = sh.Cells(2, cl.Column)
k = k + 1
Next j
End If
Next
’--並べ替え
Range("H:I").Sort Key1:=Range("H1"), Order1:=xlAscending
End Sub
ーーー
実行結果
H1:I6
1 A
2 B
2 B
3 A
3 C
3 C
お礼
ご回答有り難うございます。 実際のところは、縦にも横にも長いので、行で一度結合した後に列で結合する形で対応してみることにしました。 ありがとうございました。