重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。以前、同じ行のB列とD列を比較して
B列よりD列が大きい値をカウントするために
以下の式を教えていただきました。

=SUMPRODUCT((B1:B30000<D1:D30000)*1)

その後、B列とD列それぞれに空白があることが分かり、
どちらも空白じゃない場合にのみ値を比較するにはどうしたら良いでしょうか。
自分で考えてみましたが、件数が表示されず。。
アドバイスよろしくお願いします。

AND(SUMPRODUCT((B1:B30000<>"")*(D1:D30000<>"")*1),SUMPRODUCT((B1:B30000<D1:D30000)*1))

行    B列     D列
1行    5,500   3,200
2行    8,800   3,800
3行    4,100   4,268
・・・
30000行  5,280    8,567

A 回答 (2件)

No.1です。



自分であればVBAで処理します。
一例です。

Sub Sample1()
 Dim i As Long
 Dim cnt As Long
 Dim myR

  myR = Range(Cells(1, "B"), Cells(30000, "D")) 
   For i = 1 To UBound(myR, 1)
    If myR(i, 1) <> "" And myR(i, 3) <> "" Then
     If myR(i, 1) < myR(i, 3) Then
      cnt = cnt + 1
     End If
    End If
   Next i
    MsgBox cnt
End Sub

※ どの程度短縮できるか不明ですが、
配列で処理していますので、あまり時間はかからないと思います。
    • good
    • 0
この回答へのお礼

ありがとう

一瞬で終わりました!
ありがとうございました!

お礼日時:2020/10/19 22:19

こんにちは!



どちらがが空白の行は無視すれば良いのですね。

=SUMPRODUCT((B1:B30000<>"")*(D1:D30000<>"")*(B1:B30000<D1:D30000))

だとどうなりますか?

※ 余計なお世話かもしれませんが、
SUMPRODUCT関数は配列数式になりますので、
30000行のデータ処理だと計算速度が遅くなりませんか?
ストレスを感じない程度だと良いのですが・・・m(_ _)m
    • good
    • 0
この回答へのお礼

前回に引き続きありがとうございます!
無事解決しましたが、言われたとおり少しクルクルしまって。
他に解決方などはありますでしょうか?

お礼日時:2020/10/19 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!