プロが教えるわが家の防犯対策術!

教えてください。
下記のように
①参照セルの左が空白なら空白
②参照セルが空白でなく参照セルの下も空白でなければ参照セル
③参照セルが空白でなく参照セルの上も下も空白でなければ参照セル
④参照セルの下が空白で参照セルが空白でなければ参照セル&"(1)"
⑤参照セルが空白で参照セルの上が空白でなければ参照セルの上セル&"(2)"
⑥どの行でも①から⑤の内容を適用
例えば、参照セルがE2でD2を式とする場合
①=IF(F2="","")
②=IF(AND(E2<>"",OFFSET(E2,1,0)<>""),E2)
③=IF(AND(E2<>"",OFFSET(E2,-1,0)<>"",OFFSET(E2,1,0)<>""),E2)
④=IF(AND(OFFSET(E2,1,0)=""),E2<>"",CONCAT(E2,"(1)"))
⑤=IF(AND(E2="",OFFSET(E2,-1,0)<>""),CONCAT(OFFSET(E2,-1,0),"(2)"))
⑥D2を下にフィル
となると思うのですが、1つの式に纏めるにはどうしたら良いでしょうか?
microsoft365のエクセルを使用しています。
よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。そして質問の誤記すみませんでした。
    仰るとおり、「右」です。
    ③の内容は不要なことに気づきましたので削除し、
    ①②④⑤を組み合わせると下記のようになったのですが、
    「この関数に対して、多すぎる 引数が入力されています。」
    とエラーが出てしまいます。
    =IF(F2="","",IF(AND(E2<>"",OFFSET(E2,1,0)<>""),E2,IF(AND(OFFSET(E2,1,0)=""),E2<>"",CONCAT(E2,"(1)"),IF(AND(E2="",OFFSET(E2,-1,0)<>""),CONCAT(OFFSET(E2,-1,0),"(2)"))))
    何故か教えていただけないでしょうか。
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/01/19 18:32
  • 回答ありがとうございます。
    もう少し整理してやってみます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/01/19 18:35

A 回答 (4件)

=IF(


  F2=""
  ,""
  ,IF(
    AND(E2<>"",OFFSET(E2,1,0)<>"")
    ,E2
    ,IF(
      AND(OFFSET(E2,1,0)="")
      ,E2<>""
      ,CONCAT(E2,"(1)")
      ,IF(
        AND(E2="",OFFSET(E2,-1,0)<>"")
        ,CONCAT(OFFSET(E2,-1,0),"(2)")
        )
      )
    )
   
……ということになり、閉じ括弧が一つ足りない。
で、よく見てほしい。
3つ目のIF関数の中に4つ項目がある。
まあ、これは質問本文中にあるIF関数の条件式そのものが間違えていることが原因。
(ちなみに③も間違っている)

=IF(
  F2=""
  ,""
  ,IF(
    AND(E2<>"",OFFSET(E2,1,0)<>"")
    ,E2
    ,IF(
      AND(OFFSET(E2,1,0)="",E2<>"")
      ,CONCAT(E2,"(1)")
      ,IF(
        AND(E2="",OFFSET(E2,-1,0)<>"")
        ,CONCAT(OFFSET(E2,-1,0),"(2)")
        )
      )
    )
  )

……これでエラーは出なくなると思いますがいかがでしょう。
(正しく動作すかは保証しません)
    • good
    • 1
この回答へのお礼

詳細な回答ありがとうございます。
ご指摘のとおり④の閉じカッコの位置がズレてました。
⑤も閉じカッコが1個足りませんでした。
ネストすると分かりにくいですね。
ありがとうございました。

お礼日時:2022/01/21 00:35

No1です



No2様の回答にあるように、対応関係をきちんと整理できるような記述法で記してから編集なされば宜しいでしょう。

一方で、IF関数をネストすると分かりにくくなり、補足のようなことが起こりやすいので、No1のような回答をしています。
条件が排他的になるように整理しておいて、「一致すれば対応する結果、それ以外は""」となる式をそれぞれ作成しておいて「&」でつなげる方法です。
こちらの方法であれば、ネストは無くなりますので、視認性がよくなりメンテナンスしやすくなると考えられます。
ただし、条件を上手く整理しておく必要がありますが。
    • good
    • 1
この回答へのお礼

回答&ご指摘ありがとうございます。上手くいきました。
&で繫ぐのは初めて知りました。
ありがとうございました」。

お礼日時:2022/01/21 00:26

>例えば、参照セルがE2でD2を式とする場合


>①参照セルの「左」が空白なら空白

(´・ω・`)...循環参照になるんじゃね?
この矛盾をどうしたものか5分ほど考えちゃったよ。
>①=IF(F2="","")
「左」じゃなくて「右」なのね。

・・・本題・・・

その考え方であれば、条件に優先順位を付けて考えてみましょう。
そうしてIF関数を
 IF(
   条件1
  ,条件1成立時の式
  ,IF(
     条件2
    ,条件2成立時の式
    ,IF(
       条件3
      ,条件3成立時の式
      ,IF(
  …
  ))))
のようにスタックさせてみては?

365ならたぶん収まると思います。
これが2007とかでは、項目が多すぎて修正を求められるかと思います。
この回答への補足あり
    • good
    • 0

こんばんは



>参照セルがE2でD2を式とする場合~
>参照セルの左が空白な~~
E2セルの左のセルはD2なので、D2に式を記述するとなると循環参照になります。

条件がきちんと整理されているとしてよいのなら、ご提示の式を「&」でつなげば条件に合致した項だけが実行されるので、お求めの結果になるはずです。

とは言っても、同じ条件になっているものが混在しているようなので、条件を再整理する必要がありそうです。
また、ご提示の条件のどれにも合致しない場合も含めて、考えるようにした方が宜しいでしょう。
この回答への補足あり
    • good
    • 0

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