- ベストアンサー
Excel 最小値に合致するカテゴリの抽出
初めて投稿します。よろしくお願いします。 エクセルの行ごとに異なるカテゴリデータが入って(下記のようになって)いるのですが、A列に最小値のデータ、B列最小値のカテゴリを抽出したいのです。 A列の最小値については「=MIN(D2:I2)」で抽出できたのですが、品名を返すことができず手作業しかないかと思っています。 でも、データ数が多くだんだんとわからなくなってきてしまい、このようなことができるのかお聞きしたくて投稿させていただきました。 A列|B列|C列|D列|E列|F列|G列|H列|I列| 最小値|最小値のカテゴリ|空白|品名1|数量1|品名2|数量2|品名3|数量3| 10|バナナ(※自動表示したい)||りんご|50|みかん|100|バナナ|10| 3000|鶏肉(※自動表示したい)||鶏肉|3000|豚肉|5000|牛肉|10000| どのようにお聞きしたら良いのかわからず、説明不足な点があるかと思いますがお分かりの方がいらっしゃいましたらご教示ください。 お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
B2セルに =INDEX(D2:I2,1,MATCH(MIN(D2:I2),D2:I2,FALSE)-1) 或いは A2セルの値を利用して =INDEX(D2:I2,1,MATCH(A2,D2:I2,FALSE)-1) OFFSET関数利用すれば =OFFSET(B2,0,MATCH(MIN(D2:L2),D2:L2,FALSE)) 或いは =OFFSET(B2,0,MATCH(A2,D2:L2,FALSE)) で下までコピィしてみて試してみてください。 最小値に重複なしが条件です。
その他の回答 (2)
- pascal3141
- ベストアンサー率36% (99/269)
このようなたくさんの条件はVBAが得意です。「ツール」「マクロ」「Visual Basic Editor」と開いていって、「挿入」でModule1の部分に以下のコードを貼り付けましょう。動かす時は、「ツール」「マクロ」「マクロ」をえらんで、「MinFind」を実行します。 (注意)データの入っているシート名は、「work」検索行数は100行としています。変更したい場合は下のコードの初期設定のシート名・行数を変えてください。 Sub MinFind() Dim i, j, k As Integer Dim D(3) As Integer Dim H(3) As String Dim WS As Object Dim Flag As Integer '初期設定 シート名 Set WS = Worksheets("work") '初期設定 検索行数 k = 100 '実行 With WS For i = 1 To k '検索値セット D(1) = .Cells(i + 1, 5).Value D(2) = .Cells(i + 1, 7).Value D(3) = .Cells(i + 1, 9).Value 'カテゴリーセット H(1) = .Cells(i + 1, 4).Value H(2) = .Cells(i + 1, 6).Value H(3) = .Cells(i + 1, 8).Value '最小フラグチェツク Flag = 3 If D(1) < D(2) Then If D(1) < D(3) Then Flag = 1 Else If D(2) < D(3) Then Flag = 2 End If '最小フラグの値を表示 .Cells(i + 1, 1).Value = D(Flag) .Cells(i + 1, 2).Value = H(Flag) Next i End With End Sub
お礼
早速のご回答ありがとうございます。 まだ関数について理解不足なため、教えていただいたマクロにこれから勉強いたします。 細かい手順まで教えていただき助かりました。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
例データ A列ーH列 A列最小値 B列その品名 C-H列3対の品物と数量のデータ ーー 12 a a 12 b 28 c 16 15 c b 23 c 15 d 16 17 e c 33 d 19 e 17 25 d d 25 e 29 f 28 A2に =MIN(C2:H2) 下方向に式複写 B2に =INDEX(C2:H2,1,MATCH(A2,C2:H2,0)-1) 下方向に式複写。 結果上記A,B列 ーー 「カテゴリ」というのは、質問者の会社では良く使うのだろうが、それ以外の者には良くわからない言葉だ。 世の中で色々の意味で使われるから。 質問例には品物1とかあるから、「品物名」とか書けばよいのでは無いですか。 質問文にはこういう心配りをしてほしい。
お礼
早速のご回答ありがとうございます。 質問方法にもご指定いただきありがとうございます。 データの仕様がこのような表記だったことと、自分の聞きたいことがうまく伝えられるかが心配で気が回らずにおりました。 ありがとうございます。
お礼
ご回答ありがとうございます。 最初の式で問題なくできました。ありがとうございます。 式の意味がちょっとわからなくて恐縮ですが、これから関数を頑張って勉強します。 本当にありがとうございました。