- 締切済み
エクセルで並べ替えて比較をしたいのですが。
エクセルで並べ替えて比較をしたいのですが。 現在データの集計を行っているのですが、データ(仮に都道府県名としておきます)比較をするに際して シートAにあるデータとシートBにあるデータが必ずしも全て一致するわけではなく、 シートAは47都道府県全てのデータがあり シートBには所々データが抜けていて順番もAとは全然異なる配列で並んでいます。 この際にシートBのデータをシートAのデータの順番に並び替え一つのシートにし、データの分析を行いたいのですが、シートBの並べ替え方がわかりません。是非教えてください。よろしくお願いします。 変更前 シートAシートB 県名|顧客数 県 名|a|b|c 北海道|156 秋田県|1|5|4 青森県|283 | | | 岩手県|384 岩手県|2|6|4 宮城県|294 福島県|4|6|4 秋田県|148 | | | 山形県|54 青森県|3|5|1 福島県|213 宮城県|1|2|2 変更後 シートAシートB 県名|顧客数 県 名|a|b|c 北海道|156 青森県|283 青森県|3|5|1 岩手県|384 岩手県|2|6|4 宮城県|294 宮城県|1|2|2 秋田県|148 秋田県|1|5|4 山形県|54 福島県|213 福島県|4|6|4
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
関数で (データ)Sheet1のA列に a q v b d c Sheet2のA,B列に a xa b by d dz c cv (関数式) Sheet1のB列B1に =IF(ISERROR(OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!$A$1:$A$4,0)-1,0)),"",OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!$A$1:$A$4,0)-1,0)) B6までB1を複写。 Sheet1のC1に =IF(ISERROR(OFFSET(Sheet2!$A$1,MATCH(B1,Sheet2!$A$1:$A$4,0)-1,0)),"",OFFSET(Sheet2!$A$1,MATCH(B1,Sheet2!$A$1:$A$4,0)-1,1)) C1をC6まで複写。 (結果)Sheet1のA1:C6は a a xa q v b b by d d dz c c cv になります。 MATCH関数は、A1から何行目に、探している文字列があるか示してくれます。OFFSETはA1を起点にしてズレ行数を指定しますので、-1します。B列とC列の式の違いは、列のズレを指定する最後の部分の0と1です。 Shet11、Sheet2ともA列は内容が、ユニーク(重複出現なし)か、存在行が固まって存在しないとうまく行かないかも。
- primary5869
- ベストアンサー率27% (9/33)
Sub Test()'質問どおりなら… Dim m, n, a, b, c As Integer Sheet3.Cells.Delete For c = 0 To 3 Sheet3.Cells(1, 3 + c) = Sheet2.Cells(1, 1 + c) 'タイトル取得 Next c For m = 1 To 48 '件数入力Sheet1 For n = 1 To 48 '件数入力Sheet2 For a = 1 To 2 '横幅Sheet1 Sheet3.Cells(m, a) = Sheet1.Cells(m, a) Next a If Sheet1.Cells(m, 1) = Sheet2.Cells(n, 1) Then '県名が同じならという条件 For b = 1 To 4 '横幅Sheet2 Sheet3.Cells(m, b + 2) = Sheet2.Cells(n, b) 'Sheet1の真横に表示 Next b End If Next n Next m End Sub
補足
回答ありがとうございます 初心者なもので簡単な質問で申し訳ありませんが 補足質問:1 4行目の For c = 0 To 3 は何を意味するのですか? 補足質問:2 実際はデーターの総数(縦軸)が3560あり シートAの横軸が25 シートBの横軸が356あります。 この場合は For m = 1 To 48 '件数入力Sheet1 For n = 1 To 48 '件数入力Sheet2 For a = 1 To 2 '横幅Sheet1 For b = 1 To 4 '横幅Sheet2 の数値を下記に変更すればよろしいのでしょうか For m = 1 To 3560 '件数入力Sheet1 For n = 1 To 3560 '件数入力Sheet2 For a = 1 To 25 '横幅Sheet1 For b = 1 To 356 '横幅Sheet2 このまま実行するとコンピューターがフリーズしたのでおかしなところがあれば教えてください。