- ベストアンサー
エクセルで異なる列のデータを一致させて並び替え
A列とB列にまったく同じ商品ID(アルファベット)が記入されています。 しかし、A列とB列の商品IDは順番がバラバラです。 このA列とB列の商品IDを「一致させて並び替える」ことは可能でしょうか? 教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 簡単な方法はすでにNo.2・3さんが答えていらっしゃいますが、 他の方法の一例です。 ↓の画像で説明させていただくと 2号店の方が商品数が多いみたいなので 2号店の表に作業用の列を設けます。 作業列のH3セルに =IF(OR(E3="",COUNTIF($A$3:$A$5000,E3)),"",ROW(A1)) としてずぃ~~~!っとオートフィルで下へコピーします。 (数式が5000行まで対応できるようにしていますので、そのくらいまでコピーしても構いません) 次にJ3セルに =IF(COUNTA($A$3:$A$5000)>=ROW(A1),A3,IF(COUNTA($A$3:$A$5000,COUNT($H$3:$H$5000))>=ROW(A1),INDEX($E$3:$E$5000,SMALL($H$3:$H$5000,ROW(A1)-COUNTA($A$3:$A$5000))),"")) K3セルに =IF(J3="","",IF(COUNTA($A$3:$A$5000)>=ROW(A1),B3,INDEX($F$3:$F$5000,SMALL($H$3:$H$5000,ROW(A1)-COUNTA($A$3:$A$5000))))) L3セルに =IF(J3="","",SUMIF($A$3:$A$5000,J3,$C$3:$C$5000)+SUMIF($E$3:$E$5000,J3,$G$3:$G$5000)) という数式を入れ、J3~L3セルを範囲指定し、L3セルのフィルハンドルで 下へコピーすると画像のような感じになります。 そして、1号店・2号店の元データを並び替えすれば集計した表に反映されると思います。 その上で尚並び替えをしたい場合は J~L列を範囲指定し、形式を選択して貼り付け「値」にチェックを入れ 他の列へ貼り付け後、並び替えを行えば希望に近い形になると思います。 以上、長々と書き込んでごめんなさね。 かなり手間がかかる方法ですが、参考になれば幸いです。 尚、他に良い方法があれば 読み流してくださいね。m(__)m
その他の回答 (6)
- tom04
- ベストアンサー率49% (2537/5117)
No.6です! たびたびごめんなさい。 前回の回答の中のJ3セルの数式に間違いがありました。 J3セルは =IF(COUNTA($A$3:$A$5000)>=ROW(A1),A3,IF(COUNTA($A$3:$A$5000)+COUNT($H$3:$H$5000)>=ROW(A1),INDEX($E$3:$E$5000,SMALL($H$3:$H$5000,ROW(A1)-COUNTA($A$3:$A$5000))),"")) に訂正してください。 検証せずに投稿してごめんなさいね。 どうも何度も失礼しました。m(__)m
- imogasi
- ベストアンサー率27% (4737/17069)
質問の説明が粗い。 実例でも挙げて説明すること。特にターゲット状態を示さないと。 ーーー A列 B列 A A B C C A D A D E と在ったらどうするのか? ーー 結果 A列 B列 A A ー A ー A B- C C D- D- ーE (ーは空白セルを示す)のようなものか? === これがやりたいことなら、単純には行かず’多分関数では難しいと思うが)VBAでやる必要があるが、初心者には難しい。
No.2です。 商品別の在庫数を知りたいのなら、並べ替える必要はありません。 たとえば (1)H列に商品IDをすべて記入 (2)I1セルに「=SUMIF(A:A,H1,C:C)+SUMIF(D:D,H1,F:F)」と入力 (3)I1セルを下へ商品ID数だけコピー これでI列に商品別の在庫数合計が表示されますが、どうでしょうか。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列のデータの後にB列からコピーしたデータを貼り付けます。 その後に「データ」タブの「詳細設定」をクリックしてリスト範囲を$A1:$A3000のように変更します。 「重複するレコードは無視する」にチェックをしてOKします。 重複のないデータがA列に並びますのでその範囲を指定してコピーし、別のシートに貼り付けます。その後にもとのシートのA列とB列は削除して、コピーした先のデータをコピーしてもとのシートのA列に貼り付けます。
補足
ごめんなさい。 まったく判りません。
事例を具体的に書いてくださると助かります。たとえばA列とB列にどのようなデータがあるのかとか、それをどのように並べ変えたいのかとか。よろしくお願いします。
補足
ありがとうございます。 より詳しく書きますね。 A列には1号店の商品ID(1000件分) B列には1号店の商品名(1000件分) C列には1号店の商品在庫数(1000件分) D列には2号店の商品ID(2000件分) *1号店の商品IDと一致しています。 E列には2号店の商品名(2000件分) *1号店の商品IDと一致しています。 F列には2号店の商品在庫数(2000件分) *1号店の商品IDと一致していません。 A~C列 と D~F列を「商品ID」を基準に一致させて並び替えをしたいのです。 1号店と2号店の在庫数をまとめて算出することが目的です。 宜しくお願い致します。
- mu2011
- ベストアンサー率38% (1910/4994)
A・B列が同数ならば、列ごとに並び替え→昇順を実行では駄目でしょうか。
補足
ありがとうございます。 説明不足でした。 A列とB列は同数ではありますが、A列の商品ID数とB列商品ID数が違います。 例えば、A列は1000個なのですが、B列は2000個のような感じです。
補足
解説が粗い。 質問者を説き伏せたいのなら、もっと判りやすく書くこと。 「ー」などつかわず「-」を使うように。 文章能力を上げるVBAなどがあれば教えてあげたいです。