連続する同一値の頻度をカウントしたいです。値は少なくとも 2 つのセルを占め、隣り合っている必要があります。
ここに画像を投稿したいのですが、評判が足りません。とにかく、スクリーンショットはここにあります:https://www.dropbox.com/s/1em9ltssc1ruw0u/stackOverflow_excelIssue_Countfrequencyofsimilarvaluesinbetweenblankcells.jpg?dl=0
J7:BE7 は、30 分単位の時間に対応する値を入力する場所です。
同じシートの別の部分、この場合は DD7:EY7 で数式を実行しています。
この数式は (最初の列) DD7 -- COUNTIF(J7:$BE7,J7) にあります
この数式は (最後の列) EY7 -- COUNTIF(BE7:$BE7,BE7) にあります
DD7 の式は、J7 の値が J 列から BE 列まで 7 行目に出現する回数をカウントします。
シナリオ 1: この数式は、「オレンジ」が 1 回だけ表示される場合に最適です。私の例では、K7:L7 です。
シナリオ 2: 問題は、「オレンジ」が連続していないセルに再び表示される場合です。つまり、「オレンジ」が K7:L7 に表示され、その後 P7:Q7 に再び表示されます。
シナリオ 1 では、K7:L7 をチェックする式の結果は 2 となり、これが目的の値です。
シナリオ 2 では、K7:L7 をチェックする式の結果は 4 になります。これは、K7:L7 に表示される「オレンジ」もカウントされるためです。
M7 に異なる値がある場合、カウントが停止することを期待していました。K7:L7 には「オレンジ」が含まれ、M7:N7 には「リンゴ」が含まれます。または、U7:V7 に「グアバ」が含まれ、T7 が空の場合のように、間に空のセルがある場合、カウントが停止し、その後、X7:Y7 に再び「グアバ」が含まれます。
果実は各列の 2 列から 48 列を占めることがあります。
言葉が長いのは分かっていますが、他に説明する方法が見つかりません。英語は私の母国語ではないのです。
よろしくお願いします。
~マーク
答え1
ご要望を正しく理解していれば、次の数式が機能します。私のソリューションではダミー列とヘルパー行が必要ですが、これらは非表示にできます。さらに、少しの作業でダミー列を削除でき、ヘルパー行をどこにでも配置できます。
顧客名は 2 行目にあると仮定します。列 A をダミー列として使用し、予約データは列 B から始まります。行 3 はヘルパー行になります。セル B3 に次の数式を入力します。
=IF(B2="", "", IF(B2<>C2, 1, C3+1))
意味:
- B2="" の場合、このタイムスロットのクライアント名は空白なので、これはアイドル タイムスロットであり、空白が表示されます。
- それ以外の場合、B2<>C2 であれば、このタイムスロットと次のタイムスロットには異なるクライアントがいるので (C2 は空白の場合とそうでない場合があります)、これがこの予定の最後のタイムスロットになります。これを 1 として表します。それ以外の場合は、逆順にカウントします。つまり、この予定の最後から 2 番目のタイムスロットは 2、最後から 3 番目のタイムスロットは 3 というようになります。
セル B4 に次のように入力します。
=IF(A2<>B2, B3, "")
- A2<>B2 の場合、このタイムスロットと前のタイムスロットには異なるクライアントがいるので (A2 は空白の場合とそうでない場合があります)、これがこの予定の最初のタイムスロットになります。この予定にいくつのタイムスロット (30 分) があるかを示す B3 を表示します。それ以外の場合は空白を表示します。
これらの数式を使用したデータは次のとおりです。
これがどのように機能するかをよりわかりやすく説明するために、GUAVA データを変更しました。
「値は少なくとも 2 つのセルを占める必要があります...」とありますが、私が正しく理解していれば、行 4 の数式を次のように変更できます。
=IF(AND(A2<>B2,B3>1), B3, "")
つまり、B3 の値が 1 より大きい場合にのみ、その値を表示します。これにより、行 4 の最初の数式が行 4 に表示され、変更された数式が行 5 に表示されます。