• ベストアンサー

エクセルでセルの行番号を検出し、比較したいんですが…。

   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より大きい値が最初に出る行番号」 を比較… といった感じで進めて行きたいのです。 非常に困っています。 どなたかご教授ください。 よろしくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

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),"○","●")) ★下にコピー

oku__oku
質問者

お礼

早速ありがとうございます。 一発で解決しました。 複雑で式の意味は理解できていませんが、助かりました!

その他の回答 (2)

  • spar
  • ベストアンサー率46% (35/75)
回答No.3

#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

oku__oku
質問者

お礼

早速ありがとうございます。 VBAは苦手というか勉強中なので、今後参考にさせていただきます。 ありがとうございました。

  • spar
  • ベストアンサー率46% (35/75)
回答No.2

おはようございます 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

関連するQ&A

専門家に質問してみよう