[[20170509081014]] 『列データをひとつの列にまとめる』(とろろ) ページの最後に飛ぶ

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

 

『列データをひとつの列にまとめる』(とろろ)

表Aのデータを表Bにするにはどのような関数またはマクロを使えばよろしいでしょうか?

表Aの一行目を表Bの一列目に変更したうえで、複数の列を一つの列に直したいということです。Aceessがあればすぐ直せるのですが、あいにくAccessがないのでできないという状態です。

何卒よろしくお願い致します。

表A
|市 |県 |費用|
|A市|A県|100 |
|B市|B県|200 |
|C市|C県|300 |
|D市|D県|400 |

表B
|市 |A市|
|市 |B市|
|市 |C市|
|市 |D市|
|県 |A県|
|県 |B県|
|県 |C県|
|県 |D県|
|費用|100|
|費用|200|
|費用|300|
|費用|400|

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


 表AがA・B・C列で表BをG・H列に作るとして。
 G1セルに
 =IFERROR(INDEX(A$1:C$1,INT((ROW(A1)-1)/(COUNTA(A:A)-1))+1),"")

 H1セルに
 =IFERROR(INDEX(A:C,MOD(ROW(A1)-1,COUNTA(A:A)-1)+2,MATCH(G1,A$1:C$1,0)),"")
 と入力して下へフィルコピーではどうか。
(ねむねむ) 2017/05/09(火) 09:16

 手動方法。

 表Aの左側に1列挿入。適当に連番でも振る。

 例:表A 
 | |市 |県 |費用| 
 |1|A市|A県|100 | 
 |2|B市|B県|200 | 
 |3|C市|C県|300 | 
 |4|D市|D県|400 | 

 ピボットウィザードを起動。
 「Alt」キーを押して、D、Pと順番に押す。同時押しではなく順番に。

 「複数のワークシート範囲」にチェックを付けて「次へ」
 「自動」で「次へ」
 ワークシート範囲は2列毎選択。
 上記例だと連番の列と市の列のデータ範囲を選択して「追加」ボタンを押す。
 次に市の列と県列を選択して「追加」。さらに県列と費用列を選択して「追加」
 3範囲を追加したら「次へ」
 新規のワークシートでも既存のでも好きな方を選択して「完了」

 勝手にできたピボットテーブルの列の「総計」と行の「総計」の交点
 (例で作ると「12」になってるはず)の数値を選択。そしてダブルクリック。

 新しいシートができて、「行」「列」「値」「ページ1」という表ができているはず。
 このうち「列」「値」の列が表Bに相当するので、好きなところにコピペして
並べ替えて出来上がり。

(1111) 2017/05/09(火) 09:20


Sub main()
    Dim c1 As Range, c2 As Range, r1 As Range, r2 As Range
    Sheets("表B").Cells.ClearContents
    Set r1 = Sheets("表B").Range("A1:B1")
    For Each c1 In Sheets("表A").Range("A1").CurrentRegion.Columns
        For Each c2 In c1.Resize(c1.Rows.Count - 1).Offset(1).Cells
            Set r2 = Union(c2, c1.EntireColumn.Cells(1))
            r2.Copy: r1.PasteSpecial Transpose:=True
            Set r1 = r1.Offset(1)
        Next c2
    Next c1
End Sub
(mm) 2017/05/09(火) 09:26

コメント返信:

[ 一覧(最新更新順) ]


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