• ベストアンサー

エクセルで集計表をデータリストに変換する

この様な表を ------------------------------------    / 1  2  3  4  5 ------------------------------------ A1 /    1 ------------------------------------ B1 /          1  1 ------------------------------------ C1 / 1  1 ------------------------------------ このようなデータリストに変換したいのですが 何か良い方法はありませんでしょうか。 ------------------------ 1 C1 1 2 A1 1 2 C1 1 4 B1 1 5 B1 1 ----------------------- 上手く説明できていませんが、悩んでいます。 もしお気づきの点がありましたらご回答いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#52504
noname#52504
回答No.2

以下、仮に、 ・元表のデータ部分の範囲:E3:Z99 ・元表の列見出し:2行目 ・元表の行見出し:3列目(C列) だとします。 1.適当な列(仮にAA列~AD列とします)の1行目に、それぞれ下記の数式を入力する。  AA1:=1/LARGE(INDEX(($E$3:$Z$99<>"")/(COLUMN($E$3:$Z$99)*2^16+ROW($E$3:$Z$99)),),ROW(AA1))  AB1:=OFFSET($A$2,,INT(AA1/2^16)-1)   ※$A$2は、元表の列見出しがある行の最初のセル  AC1:=OFFSET($C$1,MOD(AA1,2^16)-1,)   ※$C$1は、元表の行見出しがある列の最初のセル  AD1:=OFFSET($A$1,MOD(AA1,2^16)-1,INT(AA1/2^16)-1)   ※$A$1は、ワークシートの左上隅セル、すなわちA1 2.AA1:AD1を下方にフィル 3.(必要に応じて)AA列を非表示にする 4.(必要に応じて)条件付書式等でエラー値を見えないようにする Excel2003で動作確認済。 ----------------------------------------------------- とりあえず潰しが効きそうな案を提示しましたが、 ・元表のデータは1のみか、それとも他の値が入ることがあるのか ・元表のデータは数字のみか、それとも文字列が入ることがあるのか ・単発の作業か、それとも、元表の変更に連動して随時変化する必要があるのか ・元表の範囲は固定か、それとも増えることがあるのか によってアプローチも変わってくると思います。 以上ご参考まで。

pen_pen_pin
質問者

お礼

ご回答ありがとうございます。 やってみます!!! 助かりました。

その他の回答 (1)

  • tos_net
  • ベストアンサー率48% (66/137)
回答No.1

ExcelVBAでこんな感じでしょうか。 Dim a, b, c As Integer c = 1 For b = 1 To 5   For a = 1 To 3     If Sheets("sheet1").Cells(a, b) = "1" Then       Sheets("sheet2").Select       Select Case a       Case 1         Cells(c, 1) = "a"       Case 2         Cells(c, 1) = "b"       Case 3         Cells(c, 1) = "c"       End Select       Cells(c, 2) = "1"       c = c + 1     End If   Next Next

pen_pen_pin
質問者

お礼

ご回答ありがとうございます。 やってみます!!! 助かりました。 お二人様本当に感謝しています。

関連するQ&A