問題点?
>構文エラーでうまくいきません
とのことですが、考え方は間違っていませんので、ケアレスミスなどではないかと思います。
提示いただいた式のようにINDIRECTを使うなら、以下の式で取得可能と思います。
=COUNTIF(INDIRECT(C1&"!C" & MATCH("作業中",'S1'!A1:A100,0) & ":C10"), "田中")
どこかスペルミスなどないですか?
COUNTIF
、INDIRECT
、MATCH
の構文はそれぞれ動くものを組めているようですので、組み合わせる際の,
や&
漏れ、ダブルクォートや括弧の括りのズレなどがあやしいかもしれません。
問題点の見つけ方
こういった問題が起きた時、関数をひとつずつ切り出して思った結果になっているか確認してみると問題点が見つけやすくなります。
まずは
・=MATCH("作業中",'S1'!A1:A100,0)
が5
を返すことの確認
これができていたら次は
・=INDIRECT(C1&"!C" & "5" & ":C10")
がS1シートのC5:C105
を指していることの確認
※これはこのままでは確認が難しいので、その範囲を数字で埋めて=SUM(INDIRECT(C1&"!C" & "5" & ":C10"))
などとすると確認しやすいです。
といった具合に進めていくと、問題点が見つけやすくなります。
INDIRECT以外では
余談になりますが、INDIRECT
は実際のセルの動き(行挿入や削除など)に追従できないため不便なことがあります。
INDIRECT
を使わずにセル範囲を指定する場合はOFFSET
が使えます。
例)OFFSET('S1'!C1, 4, 0, 6, 1)
がC5:C10となります。
・第1引数には、OFFSETの起点となるセルを指定します。
・第2・3引数は、範囲指定の基点セルの指定です。第1引数のセルから何行・何列ずらすかという指定をします。
(例ではC1から5行・0列ずらしているので、C5セルが範囲の起点となります)
・第4・5引数は、範囲指定の行数・列数です。
(例ではC5から6行・1列分の範囲としているのでるので、C5:C10の範囲となります)
これを今回の式に組み込んでみます。
今回の式で使うにあたり、範囲の最下行である10行目以降、C列にデータがないようでしたら、
=COUNTIF(OFFSET('S1'!C1, MATCH("作業中",'S1'!A1:A100,0)-1, 0, 100, 1),"田中")
という感じでできると思います。
この場合、A列に"作業中"の記載された行より下100行分が範囲になります。
10行目以降を範囲に含めたくない場合は少し面倒です。
MATCHで見つけた行を10行から引いてあげる必要があるからです。
=COUNTIF(OFFSET('S1'!C1, MATCH("作業中",'S1'!A1:A100, 0) - 1, 0, 10 - MATCH("作業中",'S1'!A1:A100,0) - 1, 1),"田中")
最後は少し面倒な話になりましたが、一例ということで参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/29 15:06