web-dev-qa-db-ja.com

COUNTIF範囲の制限としてアドレス式を使用する方法

例えば。

=COUNTIF(M13:O24,"S3")

代わりに、M13を次のセルにある値$ W $ 13にします。

=ADDRESS(1+12,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,) 

代わりに、O24を次のセルにある$ W $ 51の値にします。

=ADDRESS(AG18,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,)

このように、COUNTIF範囲の両側にある2つのアドレス式を置き換えてみました

=COUNTIF(ADDRESS(1+12,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,):ADDRESS(AG18,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,),"S3")

ただし、エラーが返されるだけです。

ご参考までに。目的は、時間帯に応じて範囲を拡大することです。 $ W $ 13と$ W $ 51は、1日の始まりから現在の時刻までの時間値の列の上部と下部のセルです。カウントは、「S3」と呼ばれる特定のアクティビティの現在の時刻までに何時間完了する必要があるかを見つけるために使用されます。

1
K-Feldspar

あなたはこれを考えすぎているかもしれません。日付/時刻の値が列Xにある場合は、次のようなCountifを使用できます。

= Countifs(W:W、 "S3"、X:X、 ">"&today())

これにより、当日のS3オカレンスのみがカウントされます。

アドレスアプローチを使用する場合は、それをINDIRECTにラップする必要があります。これにより、テキストだけでなく実際の範囲が返されます。

=COUNTIF(Indirect(
           ADDRESS(1+12,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,)
              &":"& 
           ADDRESS(AG18,11+MATCH(AG12, Plan!$L$12:$Z$12, 0),1,)
         )
 ,"S3")

読みやすくするために、いくつかのインデントを追加しました。

2
teylyn