• ベストアンサー

エクセル 最大値データのある行のみを残したい。

表題の質問をさせていただきます。よろしくお願いいたします。 A列には商品名 B列には販売数があるとします。 商品には一回しか出てこない物や何度も出てくるものがあります。 そこで、販売数が最大値のみの重複しない商品データにする方法をお聞きしたいのです。 できれば非表示的な処理ではなく不要行削除が望ましいです。 例 下の場合 りんご 3(重複商品の最大値) みかん 5(単独商品) りんご 1 バナナ 6(単独商品) りんご 2 イチゴ 2(重複商品の最大値) イチゴ 1 ↓にしたいのです。 りんご 3 みかん 5 バナナ 6 イチゴ 2 よろしくお願いいたします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No2 merlionXXです。 myDic自身が配列だったのでもっと簡潔な書き方が出来ました。 ご参考のため各コードにコメントも付けておきました。 Sub test02() Dim myDic As Object '変数宣言 Dim c As Range '変数宣言 Set myDic = CreateObject("Scripting.Dictionary") 'myDicを用意 For Each c In Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)) 'A列の各データについて If Not myDic.exists(c.Value) Then 'myDicになければ myDic.Add c.Value, c.Offset(0, 1).Value '追加しB列データを結びつける Else 'myDicにあれば myDic(c.Value) = IIf(myDic(c.Value) < c.Offset(0, 1).Value, c.Offset(0, 1).Value, myDic(c.Value)) 'B列データの大きい方を結びつける End If Next c '繰り返し Set ns = Worksheets.Add(After:=ActiveSheet) 'シートを追加 ns.Range("A1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.Keys) 'A列にデータ ns.Range("B1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.Items) 'B列に結びつけデータ Set myDic = Nothing Set ns = Nothing End Sub

Haku46
質問者

お礼

お返事ありがとうございます。 前日のお礼時に書いた内容までは、まだ解決できていないのですが、当初質問させていただいた内容については無事に解決いたしております。 時間が掛かると申し訳ないので、いちど締め切らせていただこうと思います。 この度は本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

VBAで行う一例です。 別シートを作成し、そこに抽出します。 Sub test02() Dim myDic As Object Dim c As Range Dim myKey(), myItem() Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)) If Not myDic.exists(c.Value) Then myDic.Add c.Value, c.Offset(0, 1).Value Else myDic(c.Value) = IIf(myDic(c.Value) < c.Offset(0, 1).Value, c.Offset(0, 1).Value, myDic(c.Value)) End If Next c myKey() = myDic.Keys myItem() = myDic.Items ' MsgBox Join(myKey()) & Join(myItem()) Set ns = Worksheets.Add(After:=ActiveSheet) ns.Range("A1").Resize(myDic.Count, 1).Value = Application.Transpose(myKey()) ns.Range("B1").Resize(myDic.Count, 1).Value = Application.Transpose(myItem()) Set ns = Nothing End Sub

Haku46
質問者

お礼

お返事ありがとうございます。 早速 試させていただき無事に動作が出来まして、今は勉強しながら既存シートへの上書きへの変更や商品名がA列に無いときなどの場合の実験をしているところでした。(ともに うまくできました) するとお礼をする前に次のお返事が入っており感激しているところです。 しかも、コードの解説付きで大感謝です。 さらに、参考にさせていただきながら改造をしてみようと思っております。 のちほど追加の質問をさせていただこうと思いますので もしよろしければご教授の程よろしくお願いいたします。 ちなみに現在、格闘中の部分は 実際には列がたくさんあるので A・B以上の列の場合と 最大値がB列に無い場合への改造を試しております。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

案1 フィルタオプションの設定で重複レコードを削除し 配列数式で計算 =MAX(IF($A$2:$A$8=D2,$B$2:$B$8)) コピー&値の貼り付け 案2 ピボットテーブル案の最大値 案3 並べ替えて 集計を最大値で は非表示なので没ですね

Haku46
質問者

お礼

お返事いただきありがとうございます。 全て試させていただいたところ、案1が良さそうだったのですけど なかなか同じ動作が出来ずに いろいろと やっていたところ ご提案を参考にさせていただきながら以下の方法で解決できました。 商品名を第一優先で販売数を降順で並べ替えておく。 フィルタオプションの設定を選択範囲にしました。 すると どうにか思っていた結果に結びつけることが出来ました。 この度はありがとうございました、今後ともよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel 指定値だけ行コピー+値の移動

    Excel 2010でSheet1に次のような表があります。  A列  B列 C列 D列 E列  りんご 111  222 333 444  みかん 555  666  いちご 777  888 999   ・   ・   ・ これをマクロを使って、次のような形にしたいと思います。 1.C列以降の「数値が入った列数分だけ」行コピーをする。(最大9列まで)  (この例の場合りんごの行は3回、みかんの行は1回、いちごの行は2回) 2.次にC列以降の数値はコピーした行のB列に移動する。 マクロ実行後は次のようになります。  A列  B列  りんご 111  りんご 222  りんご 333  りんご 444  みかん 555  みかん 666  いちご 777  いちご 888  いちご 999   ・   ・   ・ 膨大な数のデータですので、マクロを使って処理したいと思っています。 どうぞよろしくお願いいたします。

  • エクセル 複数行にまたがっているデーターを一つの行にまとめたい

          A列  B列   C列 1行目  佐藤 北海道 りんご 2行目  佐藤 北海道 ばなな   3行目 伊藤  東京  いちご 4行目  伊藤  東京  ばなな  上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列 1行目  佐藤 北海道  りんごばなな 2行目  伊藤  東京   いちごばなな A列とB列のデーターが同じでC列のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • エクセルの重複データ、必要数を指定して絞る

    エクセルの重複データ、必要数を指定して絞ることは可能ですか。 エクセル2010です。 マクロはよくわからないので、マクロを組まねばならないようでしたらあきらめます。 たとえばある列に (別の列もデータがあります。 この列を基点にしぼるイメージです) りんご りんご りんご りんご りんご りんご りんご りんご バナナ バナナ バナナ バナナ バナナ バナナ みかん みかん みかん みかん みかん みかん みかん みかん みかん みかん と、個数がランダムで同データがあるような場合に りんご りんご りんご りんご りんご バナナ バナナ バナナ バナナ バナナ みかん みかん みかん みかん みかん と5個に絞るということです。 「重複するレコードは無視する」としたときに1つにしぼられますが、 1つでなく、5つに絞るようなイメージです。 そのような指定がなんらかで可能でしょうか。 テキストフィルターをうまく使えばできたりするでしょうか。 よろしくお願い致します。

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

  • エクセル 複数行にまたがっているデーターを一つの行

    以前に似たようなVBAの質問を元にさらにやりたいVBAがあるのですが、 (前の質問者のURL:http://okwave.jp/qa/q4955096.html)       A列  B列   C列   D列   E列 ~ R列 1行目  佐藤 北海道 りんご S 100 105 2行目  佐藤 北海道 ばなな M 100 105   3行目 伊藤  東京  いちご S 100 105 4行目  伊藤  東京  ばなな M 100 105 上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列      C列 1行目  佐藤 北海道  りんご,ばなな  S,M 2行目  伊藤  東京   いちご,ばなな  S,M A列とB列とE列~R列のデーターが同じでC列,D列,のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • エクセルの各範囲で最大値を求めたい。

    エクセルの各範囲で最大値を求めたい。 エクセルのA列に商品名、B列に数量が書かれています。これを商品名を基準に「並べ替え」をすると、次のような表(A列)(B列)になりました。      (A列)     (B列)   (C列)      商品名     数量  最大値       いちご     18     42       いちご     42         いちご     35       いちご     22      オレンジ     18      33      オレンジ     25       オレンジ      33       バナナ      21      27       バナナ      27        ここで、各商品の数量の最大値を、C列の、各商品の 先頭行に表示したい。( 上記表示 )  データは大量にあり、並べ替えの結果、同じ商品が何行になるかはやってみないとわかりません。  人が、同じ商品の範囲を指定して、最大値を求めていくことは、量的に不可能です。 自動的に求める方法を教えてください。 よろしくお願いします。

  • エクセルで重複データの編集

    次のようなデータがあります。     商品名 | 産地 | 店名 | 1行  みかん   静岡   あ 2行  りんご   青森   い 3行  みかん   愛媛   う 4行  みかん   静岡   え 5行  りんご   長野   お 6行  みかん   愛媛   か            実際には列の項目はもっとあります。 行も3万件ほどあります。 これを「商品名」「産地」などの重複する行を 一つにまとめ「店名」のみを結合した表を作成したいです。     商品名 | 産地 | 店名 | 1行  みかん   静岡   あ・え 2行  りんご   青森   い 3行  みかん   愛媛   う・か 4行  りんご   長野   お 重複データの抽出・削除だけでなく、一部分を 結合させて表示させる方法がわかりません。 よろしくお願いします。

  • エクセル関数 データの抽出について

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • エクセルで別の行に並んだ重複データをチェックしたい

    ネットで色々調べてはみたのですがやり方がいまいち見つからずどなたかお力添えいただけると幸いです 同じ行にならんでいるデータ内で重複するものを見つける関数はわかったのですが 別の行に並んでいるそれぞれのデータで重複するものを見つけるやり方はありますか? 例)      A    B 1  みかん  りんご 2  みかん  ぶどう 3  りんご   もも 上記の場合、A3のりんごとB1のりんごが重複していますがこれを探したいのです ※A1のみかんとA2のみかんは含みません 不慣れな質問で大変恐縮ですが何卒よろしくお願いいたします

  • エクセル データの比較・抽出方法について

    列1と列2を比べて、データが一致しないものを抽出したいのですが、方法がわかりません。どなたかご存知のかた教えていただけないでしょうか? 列1     列2 りんご   りんご みかん   メロン もも    もも いちご   バナナ 列2にあって 列1にないもの (→この場合メロン・バナナ) 列1にあって 列2にないもの (→この場合みかん・いちご) をそれぞれ分かるようにしたいのです。 エクセルの関数を使ってできたらよいなと思うのですが どなたか知恵を貸していただけないでしょうか。 よろしくお願いします。

子機から音がしない
このQ&Aのポイント
  • MFC-J739DWNで子機から音が聞こえないトラブルが発生しています。
  • スピーカーに切り替えると聞こえるが、もう1台の子機は正常に音が聞こえる状態です。
  • 接続は無線LANで行われ、電話回線にはEO光が使用されています。
回答を見る

専門家に質問してみよう