- ベストアンサー
エクセルでセルの行番号を検出し、比較したいんですが…。
A B C D 1 7 9 10 ● 2 8 12 11 ○ 3 6 8 10 ○ 4 14 9 9 ● 5 7 12 10 ○ 6 12 8 12 このようなA列~D列があるとします。 A列~C列は値が、D列には○や●の記号が入るとします。 ここで、D1には、 「A2以降のA列で、C1より大きい値が最初に出る行番号」 と 「B2以降のB列で、C1より大きい値が最初に出る行番号」 を比較したときに、 A列の方が早ければ○、B列の方が早ければ●と表示させたいのですが、 どのようにすればよいでしょうか? (たとえば、D1は、A列では4行目、B列では2行目にC1より大きい 値がでるので、●といった感じです。) 引き続いて、D2は 「A3以降のA列で、C2より大きい値が最初に出る行番号」 と 「B3以降のB列で、C2より大きい値が最初に出る行番号」 を比較… といった感じで進めて行きたいのです。 非常に困っています。 どなたかご教授ください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
D1=IF(MAX(A2:B10)<C1,"",IF(IF(MAX(A2:A10)>=C1,MATCH(1,INDEX(--(A2:A10>=C1),),0),10^5)<IF(MAX(B2:B10)>=C1,MATCH(1,INDEX(--(B2:B10>=C1),),0),10^5),"○","●")) ★下にコピー
その他の回答 (2)
- spar
- ベストアンサー率46% (35/75)
#2です すみません、こっちでお願いします 単に○●のでる列が違うだけです Dim AB_Row, C_Row, MyCell Sub AB() MyCell = Range("A65536").End(xlUp).Row For C_Row = 1 To MyCell For AB_Row = C_Row + 1 To MyCell If Sheet1.Cells(AB_Row, 1).Value > Sheet1.Cells(C_Row, 3).Value Then Sheet1.Cells(C_Row, 4) = "○" Exit For ElseIf Sheet1.Cells(AB_Row, 2).Value > Sheet1.Cells(C_Row, 3).Value Then Sheet1.Cells(C_Row, 4) = "●" Exit For End If Next AB_Row Next C_Row End Sub
お礼
早速ありがとうございます。 VBAは苦手というか勉強中なので、今後参考にさせていただきます。 ありがとうございました。
- spar
- ベストアンサー率46% (35/75)
おはようございます VBAがお分かりでしたら下記を実行してみて下さい よろしくです Dim AB_Row, C_Row, MyCell Sub AB() MyCell = Range("A65536").End(xlUp).Row For C_Row = 1 To MyCell For AB_Row = C_Row + 1 To MyCell If Sheet1.Cells(AB_Row, 1).Value > Sheet1.Cells(C_Row, 3).Value Then Sheet1.Cells(C_Row, 5) = "○" Exit For ElseIf Sheet1.Cells(AB_Row, 2).Value > Sheet1.Cells(C_Row, 3).Value Then Sheet1.Cells(C_Row, 5) = "●" Exit For End If Next AB_Row Next C_Row End Sub
お礼
早速ありがとうございます。 一発で解決しました。 複雑で式の意味は理解できていませんが、助かりました!