- ベストアンサー
エクセルで集計表をデータリストに変換する
この様な表を ------------------------------------ / 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 ----------------------- 上手く説明できていませんが、悩んでいます。 もしお気づきの点がありましたらご回答いただければ幸いです。
- みんなの回答 (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のみか、それとも他の値が入ることがあるのか ・元表のデータは数字のみか、それとも文字列が入ることがあるのか ・単発の作業か、それとも、元表の変更に連動して随時変化する必要があるのか ・元表の範囲は固定か、それとも増えることがあるのか によってアプローチも変わってくると思います。 以上ご参考まで。
その他の回答 (1)
- tos_net
- ベストアンサー率48% (66/137)
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
お礼
ご回答ありがとうございます。 やってみます!!! 助かりました。 お二人様本当に感謝しています。
お礼
ご回答ありがとうございます。 やってみます!!! 助かりました。