• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同列で重複する値の隣の列の値を表示させたい)

エクセルで同列重複値の隣の列の値を表示する方法

このQ&Aのポイント
  • エクセルでA列で重複する値がある場合、隣の列B列の値をC列に表示させる方法について教えてください。
  • A列には品目のデータが2000行以上あり、B列には価格が1000程度しか埋まっていません。出来れば関数か何かでB列の抜けた価格データを埋めたいです。
  • エクセルのバージョンは2000です。どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.1・3です。 結論として、B列が空白部のみデータ表示すれば良いというコトなので、 マクロでの別案です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 2) = "" Then Cells(i, 2) = WorksheetFunction.VLookup(Cells(i, 1), Range(Cells(1, 1), Cells(i, 2)), 2, False) End If Next i End Sub 'この行まで ※ 第一出現データ行のB列には必ずデータがある!という前提です。 そうでない場合はNo.5さんのような方法になると思います。m(_ _)m

sunaxsuna
質問者

お礼

度々お答え頂いて、本当にありがとうございます。 No1・3にて職場のデータにも無事空白を埋めることが出来ました。 今後も定期的にこの作業が生じますので、教えて頂いたマクロでもやれれば とてもやり易くなると思います。 B列に値がない場合も考えて、No.5さんの方法とも合わせてチャレンジしたいと思います。 誠にありがとうございました!

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

その品名が最初に出てきたときに価格が入力されている場合には回答1のような方法でも良いのですが、価格が後の方で入力されている場合には価格が表示されません。それを避けるためには配列数式など難しい式を使うことになりますがデータの数が2000以上にもなります計算では負担がかかります。 次のような方法で作業列を使って操作をするのがよいでしょう。 ここではAおよびB列のデータは2行目から下方に入力されているとします。 C2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(C$1:C1)+100000+B2,ROUNDDOWN(INDEX(C$1:C1,MATCH(A2,A:A,0)),-5)+B2)) D2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(B2<>"",B2,IF(ROUNDDOWN(SMALL(C:C,RANK(C2,C:C,1)+COUNTIF(A:A,A2)-1),-5)=C2,MOD(SMALL(C:C,RANK(C2,C:C,1)+COUNTIF(A:A,A2)-1),100000)))) D列にお求めのデータがB列で空白の行を含めて表示されます。作業列などの表示が目障りでしたらC列を選択して右クリックして「非表示」を選択すればよいでしょう。あるいはB列とC列を同時に非表示にしてもよいですね。

sunaxsuna
質問者

お礼

ご回答ありがとうございます。 とても詳しく書いて下さいましたのに、私が不慣れなせいでC2セルに入力する数式のところで C5のところが、引数が足りないと表示されて次に進めずで申し訳ありません。 もう少し勉強を重ねて再度チャレンジしてみます。 本当にありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

再掲: >「循環参照」のダイアログが表示されたら、とりあえずOKする >画面下端のステータスバーに「循環:B8」などのように表示が出るので、そのセルに行く #補足 そのセルに行くと、ゼロになっている 再掲: >オートフィルタを取り付けて、A列をその商品で絞る >B8に金額を手入力する。 #補足 ゼロになっているセルに正しい金額を手入力する

sunaxsuna
質問者

お礼

何度もご回答頂き、ありがとうございます。 B列に0が入っていてokだったんですね。 理解が足りなくてお手数をお掛けしてしまい、申し訳ありませんでした。 おかげさまで、無事循環参照を使って手入力するところまでいけました! 本当にありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です! たびたびごめんなさい。 投稿後、気になったのですが、 質問の前半に >列の値をC列に表示させるような方法はありますか? とあったのでC列に表示させる数式を前回投稿しましたが、 後半では >出来れば関数か何かでB列の抜けた価格データを埋めたいと思っています。 となっていますので、もしかしてB列の空白部を埋めたい!というコトですかね? もしそうであれば、前回のC列はそのままでD列を作業用の列として使用します。 D1セルに =IF(B1="",C1,B1) という数式を入れます。 D1セルのフィルハンドルでダブルクリック → D列すべてを範囲指定 → 右クリック → コピー → B1セルを選択 → 右クリック → 形式を選択して貼り付け → 「値」を選択しOK これでB列すべてが埋まるはずです。 最後にC・D列すべてを削除して完了です。 ※ A列データで最初に出現する場合は必ずB列にデータがある!という前提条件です。m(_ _)m

sunaxsuna
質問者

お礼

何度もご回答頂き、ありがとうございます! 説明不足の質問でお手数をお掛けしてしまい、本当に申し訳ありませんでした。 おかげさまで、当初の目的通りにB列の空白を埋める事ができました。 職場でのデータにて同じようにやってみます。 何度もとてもわかりやすいお答えを頂き、本当にありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

簡易な方法: B2:B8を選択する Ctrl+Gを押す 現れたダイアログでセル選択をクリックする 現れたダイアログで空白セルにマークしてOKする ご相談で書かれたサンプルだと、B5、B7が飛び飛びに選択され、B5がアクティブセルになっている その状態で、 =VLOOKUP(A5,A:B,2,FALSE) と記入し、必ず「コントロールキーを押しながら」Enterで入力する。 その際に: 「循環参照」のダイアログが表示されたら、とりあえずOKする 画面下端のステータスバーに「循環:B8」などのように表示が出るので、そのセルに行く オートフィルタを取り付けて、A列をその商品で絞る B8に金額を手入力する。 循環参照が消失するまで繰り返す。

sunaxsuna
質問者

お礼

ご回答頂きまして、ありがとうございます。 不勉強者でして、初めて循環参照を使わせて頂きました。 VLOOKUPの作業から、不慣れなせいかB列の数値が0になりまして、 成功させる為、もっと何度かチャレンジしてみたいと思いました。頑張ります。 本当にありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 同品目の場合、価格も同価格だという前提で・・・ 仮にデータが1行目からある場合は C1セルに =IF(COUNTBLANK(A1:B1)=1,INDEX($B$1:B1,MATCH(A1,$A$1:A1,0)),"") という数式を入れオートフィルで下へコピーではどうでしょうか? 外していたらごめんなさいね。m(_ _)m

sunaxsuna
質問者

お礼

ご回答ありがとうございます。 分かりにくい質問文で申し訳ありません。仰る通り、同品目=同価格でした。 自宅にて教えて頂いた通りに入力させて頂きまして、B列で空白だったC5とC7に同品目の価格が表示出来ました。 明朝、職場で同じように作業してみます。ありがとうございます!

関連するQ&A