77634


例えば以下のような表があったとき、飛び飛びについている０の個数を検出したいです。

[code]

    実績A　１　１　１　１　１　１　１　１　１
    実績B　１　１　０　１　０　１　１　１　１
    実績C　１　１　０　０　０　０　１　１　１
    実績D　０　０　０　１　１　１　０　０　０
    実績E　１　１　１　１　１　０　０　０　０
    
[/code]

例の場合、実績B、Cのように、０が１に挟まれている状態がNGです。実績Bは２個、Cは４個です。  
実績DとEは、０は存在しますが、最初から連続している、または最後まで連続していて、１に挟まれていないのでOKです。

いいアイデアがあればアドバイスいただけると嬉しいです。


CC BY-SA 4.0
2021-06-17T10:14:39.613
77628
2021-06-17T21:27:02.930
2021-06-17T11:07:10.100
3060
46909
question
vba excel
Excelで、虫食い状になっている実績を検出したい


  * 先頭から連続する`0`をスキップ、つまり最初に出現する`1`を探す
  * 同様に末尾に連続する`0`をスキップ、つまり最後に出現する`1`を探す
  * これによって縮小された範囲の中で`0`をカウント

で得られるのではありませんか？

仮に検索範囲を`$B1:$J1`としたら

[code]

    =LET(
        DATA, $B1:$J1,
        START, XMATCH(1, DATA, 0, 1),
        END, XMATCH(1, DATA, 0, -1),
        COUNTIF(OFFSET(DATA, 0, START-1, 1, END-START+1), 0)
    )
    
[/code]

でできるかと。例示されている通り横並びで計算しましたが縦並びの場合は[`OFFSET`関数](https://support.microsoft.com/ja-
jp/office/offset-%E9%96%A2%E6%95%B0-c8de19ae-
dd79-4b9b-a14e-b4d906d11b66)に与える引数を変えてください。


CC BY-SA 4.0
2021-06-17T21:27:02.930
77634
2021-06-17T21:27:02.930
4236
77628
answer