プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっています。

特定の列から左列に対し数値が連続しているか,1つ飛ばしで存在するかを求めようとしてます。
画像を見て頂くのが分かりやすいと思います。

39(D)の列から起算し左に2列連続で数値が入って入るか
3列連続で数値が入って入るか、1列あけて数値が入って入るかで
結果(E列)に表示させる文字を変更したいです。どうもうまくできなく。。
お力添えを頂けると助かります。

「【Excel/関数/IF関数】連続した条」の質問画像

A 回答 (10件)

No.4です。


No.9さんのご指摘のとおり、「添付画像」からしか判断できないわけですが、常識的に考えて、右方向に時間が経過するものとします。
すると、

>39(D)の列から起算し左に
>①2列連続で数値が入って入るか、➁3列連続で数値が入って入るか、
>③1列あけて数値が入って入るか

というご質問者の説明は、39列が直近週で、38列がその前週、37列がその前々週となり、直近週を起点として考えるということになります。

確かに画像にあるように、37列と38列の2週連続は有り得るわけですが、直近週に数字がない場合、
「39(D)の列から起算し左に2列連続で数値が入っているか」に該当しないので、上記①には該当しないという判断です。
    • good
    • 0

図から想定したら、Dセルに入力があることが第一条件なんじゃないですか?

    • good
    • 0

№4様と№7様の案では、BCの2週連続とCDの2週連続を両方表示できないように思います。

図のA列abcとvwxです。図ではabcの結果は”-”となっていますが、仕様では、「39(D)の列から起算し左に2列連続で数値が入って入るか」ですから、D列が””でもCB列がともに数値があれば2週連続ではないかと思われます。そのような理解でしょうか。
    • good
    • 0

項目名の上に1行挿入し、37の上に100、38の上に10、39の上に1と入れる。


(こちらではB1~D1の範囲に入力でサンプル作成してます)

E3=IF(SUMPRODUCT($B$1:$D$1,N(ISNUMBER(B3:D3)))=111,"3Wk連続",IF(SUMPRODUCT($B$1:$D$1,N(ISNUMBER(B3:D3)))=101,"隔週",IF(SUMPRODUCT($B$1:$D$1,N(ISNUMBER(B3:D3)))=11,"2Wk連続","")))

で下にコピー。
式が長くなるので、111、や101などを先にだしておいて別列でそれに対応する文字列を表示させるという方法の方がいいかも。
    • good
    • 0

E2=IF(AND(B2<>"",C2<>"",D2<>""),"3Wk連続",


   IF(AND(B2<>"",C2<>"",D2="" ),"2Wk連続",
  IF(AND(B2="" ,C2<>"",D2<>""),"2Wk連続",
  IF(AND(B2<>"",C2="" ,D2<>""),"隔週",""))))
ではどうでしょうか。
    • good
    • 0

No.4です。


大変失礼しました。前回回答で数式を記述するセルを「D2」と書いたのですが、ご質問者が投稿された画像を基にしていますので、「E2」の誤りでした。お詫びして訂正いたします。
    • good
    • 0

配列数式でよいなら、D2に



=IFERROR(CHOOSE(SUM((B2:D2<>"")*{1,2,4})-4,"隔週","2Wk連続","3Wk連続"),"")

を入力し、CTRL+SHIFT+ENTERで確定させ、これを下方向へコピーすればよいと思います。
なお、EXCELのバージョンが「365」ならENTERだけでもOKです。

配列数式を避けるなら、D2に

=IFERROR(CHOOSE(SUMPRODUCT((B2:D2<>"")*{1,2,4})-4,"隔週","2Wk連続","3Wk連続"),"")

を入力し、下方向へコピーすればよいと思います。
    • good
    • 0

(。

-`ω-)...あえてIF関数を使わないでやってみた。

=CHOOSE(BIN2DEC(TEXTJOIN("",FALSE,COUNT(D2),COUNT(C2),COUNT(B2)))+1,"","","","","1Wk","隔週","2Wk","3Wk")
    • good
    • 0

=IF(COUNT(B2:D2)=3,"3Wk連続",IF(COUNT(B2:D2)=2,IF(C2="","隔週",IF(D2<

>"","2Wk連続","")),""))
    • good
    • 0

=if([39列]="","",if([37列]="",if([38列]="","","2Wk連続"),if([38列]="","

隔週","3Wk連続")))
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!