- ベストアンサー
データの並び替え方法について
- リストAの形式からリストBに自動で変換する方法を教えてください。EXCELでもACCESSでも簡単なやり方があればうれしいです。
- データの並び替えについて、リストAの形式からリストBに変換する方法を教えてください。EXCELやACCESSで簡単に実行できる方法を教えてください。
- データの並び替えについて知りたいです。リストAのデータをリストBの形式に変換する方法を教えてください。EXCELやACCESSを使った簡単な手順があれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ユニオンクエリで。 SELECT 顧客番号, 1 AS データ区分, データ1 AS 数量 FROM リストA UNION SELECT 顧客番号, 2, データ2 FROM リストA UNION SELECT 顧客番号, 3, データ3 FROM リストA UNION SELECT 顧客番号, 4, データ4 FROM リストA Order By 顧客番号, データ区分
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
エクセルのマクロ例です。 (1)リストAをSheet1、リストBをSheet2としています。 (2)Sheet2タブで右クリック→コードの表示→以下のコードを貼り付け→VBE画面終了 (3)ツール→マクロ実行 Sub シート1をシート2に並替え() Set ws1 = Sheets("sheet1") Set ws2 = Sheets("sheet2") j = 2 For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row x = 1 For k = 3 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column ws2.Cells(j, 1).Value = ws1.Cells(i, 1) ws2.Cells(j, 2).Value = x ws2.Cells(j, 3).Value = ws1.Cells(i, k) j = j + 1: x = x + 1 Next Next End Sub
お礼
回答ありがとうございます 僕はVBの知識がなく、ちょっと難しいです わざわざ回答くださりありがとうございます
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、【リストA】が存在している範囲がSheet1のA列~F列で、Sheet1のA1セルに「顧客番号」、B1セルに「氏名」、C1セルに「データ1」、D1セルに「データ2」、E1セルに「データ3」、F1セルに「データ4」と入力されていて、 【リストB】が存在している範囲がSheet2のA列~C列で、Sheet2のA1セルに「顧客番号」、B1セルに「データ区分」、C1セルに「数量」と入力されているものとします。 まず、Sheet2のA2セルに次の数式を入力して下さい。 =IF(ROW()>(COUNTIF(Sheet1!$A:$A,"><")-1)*4+1,"",INDEX(Sheet1!$A:$A,FLOOR(ROW()-2,4))) 次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF($A2="","",MOD(ROW()-2,4)+1) 次に、Sheet2のC2セルに次の数式を入力して下さい。 =IF($A2="","",INDEX(Sheet1!$C:$F,FLOOR(ROW()-2,4),MOD(ROW()-2,4)+1)) 次に、Sheet2のA2~C2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。 以上です。
お礼
すいません お礼の入力しておりませんでした 大変遅くなりましたがありがとうございました
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
たたき台! 前提条件 4行ごと A8セル =IF(COUNTA($A$2:$A$5)*4<ROW(A1),"",INDEX($A$2:$A$4,ROW(A4)/4)) B8セル =IF(A8="","",MOD(ROW(A4),4)+1) C8セル =IF($A8="","",INDEX($C$2:$F$4,ROW(B4)/4,MOD(ROW(B4),4)+1)) A8:C8下へオートフィル
お礼
すいません お礼の入力しておりませんでした 大変遅くなりましたがありがとうございました
お礼
すいません お礼の入力しておりませんでした 大変遅くなりましたがありがとうございました