修正ありがとうございました。質問に記載されている「試したこと」の方向性で実現可能です。
ただし、SUBSTITUTE
だと "-" の繰り返しを見極められないので、
正規表現を扱える REGEXREPLACE
を使うと良いです。
これなら"-"の1回以上の繰り返しを"-+"で表現できます。
セルを結合して文字列としてから"-+"を1個の"-"に置き換え、
その後 "-" 以外の文字を削除して 文字数を数えるでも良いのですが、
もうちょいシンプルに記述すると以下で対応できます。
CONCATENATE
でもいいんですが、好みでTEXTJOIN
を使ってます。
"[^-]-+[^-]" の部分は、
"-"ではない文字の0回以上の繰り返しと"-"の1回以上の繰り返しと"-"ではない文字の0回以上の繰り返し
の一塊だと思ってください。それらを全て "-" に置き換えて LEN
で文字の長さを取得しています。
GoogleSheets
1=LEN(REGEXREPLACE(TEXTJOIN(,TRUE,B2:2),"[^-]*-+[^-]*","-"))
他にも以下のように先頭とお尻に適当な1文字を入れて、
(これは"-"から始まったり、終わったりする時の対策)
"-"を区切りとしてSPLIT
で分割し要素の数+1って方法もあります。
GoogleSheets
1=COUNTA(SPLIT(TEXTJOIN(,TRUE,"*",B2:2,"*"),"-"))-1