Excel関数(IF)のネストで数式が確定できない問題について

このQ&Aのポイント
  • Excel関数(IF)のネストで数式が確定できない問題に悩んでいます。質問文章全体の100文字程度の要約文を3つ作成し、解決方法をご教授ください。
  • Excel関数(IF)のネストで数式が確定できない問題について質問しています。セルD1に入っている文字から漢字の前部分を抜き出すためにIF文を使用しているのですが、ネストの制限により数式が確定できません。Excel2003 SP3を使用しています。
  • Excel関数(IF)のネストで数式が確定できない問題に悩んでいます。セルD1に入っている文字から漢字の前部分を抜き出すためにIF文を使用していますが、ネストの制限により数式が確定できません。解決方法をお教えいただけると助かります。
回答を見る
  • ベストアンサー

Excel関数(IF)のネストができません

セルD1に「1.1締切」「2.2.2.2延長」などの文字が入っています。 「締切」や「延長」などの漢字の前部分をE1に抜き出したく、 以下のような、IFでの数式を作りました。 MIDで2文字以降の先頭文字を抜き出して、LENBで2バイトだったら LEFTでその前を抜き出す、という感じです。 =IF(LENB(MID(D1,2,1))=2,LEFT(D1,1), IF(LENB(MID(D1,3,1))=2,LEFT(D1,2), IF(LENB(MID(D1,4,1))=2,LEFT(D1,3), IF(LENB(MID(D1,5,1))=2,LEFT(D1,4), IF(LENB(MID(D1,6,1))=2,LEFT(D1,5), IF(LENB(MID(D1,7,1))=2,LEFT(D1,6),"数式を確認")))))) 「2.2.2.」など、漢字の前部分は最大7文字なので、最後に IF(LENB(MID(D1,8,1))=2,LEFT(D1,7)を もう一つ入れたいのですが、これを入れると数式が確定できなくなります。 IF関数のネストは7レベルまで(最初のIFを入れて8個までと認識してます)、 中にあるMIDやLENBも、追加しても7個になるはずなので 確定できると思ったのですが、出来なくて悩んでいます。 お分かりになる方いらっしゃいましたらご教授ください! Excel2003 SP3を使用です。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>=IF(LENB(MID(D1,2,1))=2,LEFT(D1,1), >IF(LENB(MID(D1,3,1))=2,LEFT(D1,2), >IF(LENB(MID(D1,4,1))=2,LEFT(D1,3), >IF(LENB(MID(D1,5,1))=2,LEFT(D1,4), >IF(LENB(MID(D1,6,1))=2,LEFT(D1,5), >IF(LENB(MID(D1,7,1))=2,LEFT(D1,6),"数式を確認")))))) は確定できたと思います。ネストのレベルは7になります。 よって、これ以上の追加は2007以降のExcelを使うことになります。 しかし、規則性があるので =LEFT(D1,MATCH(2,LENB(MID(D1,{2,3,4,5,6,7,8},1)),0)) とすればよいでしょう。(エラー処理なし)

maikimaiki
質問者

お礼

早々に回答して頂いたおかげで助かりました。 自分でも配列が使いこなせるように勉強します。 本当にありがとうございました!

maikimaiki
質問者

補足

教えていただいた配列で出来ました! ありがとうございました! IFが全部で6個だったので、 ネストレベルを超えていないと思ったのですが これでレベル7になるのですね・・・ どこを見てレベル7と判断すればよいのか、 よろしければ教えてください!

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

E1セルには次の式を入力すればよいでしょう。 =LEFT(D1,LENB(JIS(LEFT(D1,7)))-LENB(ASC(LEFT(D1,7))))

maikimaiki
質問者

お礼

回答ありがとうございます! JIS、ASCを使う手もあるんですね。 とても勉強になります! どうもありがとうございました!

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

>全角漢字のあとには、まだ文字が続きまして 半角の括弧,あるいは半角のスペースですね。 「半角」「全角」と続きますというご相談の情報提供がウソだったのでは,当然ダメです。 例えば =LEFT(A1,LEN(LEFTB(A1,7))*2-LENB(LEFTB(A1,7))) のように。

maikimaiki
質問者

お礼

早速回答ありがとうございました! 入力した情報が間違っていました、 大変失礼しました。 教えていただいた数式で出来ました。 とても参考になります、ありがとうございました!

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

=LEFT(A1,LEN(A1)*2-LENB(A1)) で良いと思いますが。

maikimaiki
質問者

補足

回答ありがとうございました! 実際のデータでは 全角漢字のあとには、まだ文字が続きまして 教えていただいた数式を試したところ 2.9.2締切期日 (営業第二要確認・未) というセルのところで、漢字も一緒に 表示されてしまいました。 でも参考になります!ありがとうございます!

  • asciiz
  • ベストアンサー率70% (6632/9395)
回答No.1

文字列は必ず 「半角英数字」+「全角漢字」ですか? それならば、別の式も考えられます。 =RIGHT(D1, LENB(D1) - LEN(D1)) バイト数で数えたときと、文字数で数えたときの差が、全角文字数ということになります。 「1.2.10.15終了」などにも対応できます。 右側部分に1バイト文字が混じると狂うので、英数字でも記号でも、全角で書いてもらわないと困りますが。 ところで"数式を確認"のエラーはどんなときに出しますか? 漢字部分が無いとき、なら、たとえば =IF(LENB(D1)=LEN(D1), "数式を確認", RIGHT(D1,LENB(D1)-LEN(D1))) このように書けるでしょう。

maikimaiki
質問者

お礼

早々に回答してくださりありがとうございました! ちなみに"数式のエラー"は必要なものではなく、 IF関数の「偽の場合」を埋める為に入れたものでした。 回答してくださる皆様は色々な可能性を考えてくださるのに 分かりづらい質問でした。大変失礼しました! どうもありがとうございました!

maikimaiki
質問者

補足

回答ありがとうございます! 文字列は必ず 「半角英数字」+「全角漢字」となります。 教えていただいた数式ですと、 「全角漢字」が抜き出されますが「半角英数字」を 抜き出したかったのです。 でも参考になりました!

関連するQ&A

  • IF関数のネスト

    IF関数のネストについての質問です。 例えば、D1のセルに日付が入力してあり、 A4のセルの日付の月がD1の月と同じならば、 「今月」違うなら「エラー」と表示させたいのですが、 数式は解るのです。↓ =IF(MONTH($D$1)=MONTH(A4),"今月","エラー") ですが入力のしかたが解らないのです。 まず、fxの関数の挿入からIFを選択、論理式の部分に、 fxの左にある下矢印からMONTHを選択、 シリアル値はD1を絶対参照。 このあとがどうしていいのか解らないのです。 どなたか教えてください。 宜しくお願いします。

  • Excel関数のネストについて

    はじめまして =IF(COUNTIF(D1:D10,"未"),"未","済") まではできたのですが、もうひとつネストする方法を教えてください。 やりたいこととして、D1からD10に”済”という文字列があったら”取得済”と表示させ ”未”という文字列があったら未取得と表示、 ★ここまでは上述した関数でできました。 +”未所持”という文字列があったら”未所持”と表示させたいです。 よろしくお願いいたします。

  • Excelで関数同士のネストのやり方について

    Excel2003で下記のようなことがしたいのですが インターネット等を見たりしていますが どうしても分からないので質問します。 -------------------------------------        B列    C列   D列 1行目  0.978205321 成功  97 2行目  0.886081752 成功   87 3行目  0.553482324 失敗  56 4行目  0.05331816 失敗    6 5行目  0.562187845 失敗  1 ------------------------------------- 上記表にて IF関数でD列、1~5行目の中に1がある場合、 1のあるセルの隣(左側) 左列のC列の"失敗"と表示させたい場合 「IF関数とレフト関数を組み合わせてネストすれば 良いのでしょうか? その場合入れ子のやり方はどうしたら良いのでしょうか? =IF(D5:D9=1,LEFT(C:C,2))だと計算式自体意味不明となってしまうので、 関数もしくはVBAを使うとどのようなネスト関数/プログラムになるのか 教えていただけませんか? なにとぞ説明不足なこんな愚かで無知な私どもに ご教授宜しくお願いします。

  • Excel2003 IF関数の条件指定方法 (2)

    御世話になります。 先ほど 下記質問に対して的確な ご回答をいただき、一旦は解決したのですが 実は 文字列「BBB」+数字の時にも 後ろの数字を拾う必要が御座いました。 「=IF」を使い、重ねるように試してみましたがダメでした。。。 =IF(ISERR(FIND("BBB",BU33)),"",MID(W33,5,2)),IF(ISERR(FIND("AAA",W33)),"",MID(W33,7,2)) 結果は「#VALUE!」でした。。。 どこを どのように直したらよろしいでしょうか。。 以下 前回の質問文です。 お手数では御座いますが、何卒 宜しくお願い致します。 ________________________________________ 掲題の件で 質問が御座います。 「W列」に文字列「AAA」 を含むコードがあり、後ろに数字が1桁~2桁入っています。 1桁の時には数字の前に半角スペースがあり、2桁の時にはスペースはありません。 他にも文字列「BBB」+数字 だったり「CCC」+数字だったりがありますが(全部で40数種類ぐらい) 「文字列AAAの時のみ後ろの数字を表示させたい」という時に「=IF」と「=MID」の組み合わせで何とかならないかと 思ったのですが、「=IF」の理論式の中で「AAAを含む」という数式を指定する方法は御座いますでしょうか? 説明不足でしたら 何なりと お申し付けください。 宜しくお願い致します。

  • Excel2003 IF関数の条件指定方法

    御世話になります。 掲題の件で 質問が御座います。 「W列」に文字列「AAA」 を含むコードがあり、後ろに数字が1桁~2桁入っています。 1桁の時には数字の前に半角スペースがあり、2桁の時にはスペースはありません。 他にも文字列「BBB」+数字 だったり「CCC」+数字だったりがありますが(全部で40数種類ぐらい) 「文字列AAAの時のみ後ろの数字を表示させたい」という時に「=IF」と「=MID」の組み合わせで何とかならないかと 思ったのですが、「=IF」の理論式の中で「AAAを含む」という数式を指定する方法は御座いますでしょうか? 説明不足でしたら 何なりと お申し付けください。 宜しくお願い致します。

  • IF関数について

    エクセル2013使用です IF関数について教えて下さい A1が空欄だった場合はB1×B2の答えを A1に文字が入っていた場合はC1×C2の答えを D1に表示させたい場合の数式を教えて下さい お願い致します

  • エクセル関数の質問です。

    エクセル関数の質問です。 A2のセルの4文字目がGならばD2セル+5、A2のセルの4文字目がFならばD2セル-10 その計算でD2のセルが5以下なら空白という関数を書きたのですがわかりません。 それぞれのIF文は以下のようにできたのですがこのIF文を一緒に書きたいのですがうまくいきません。 =IF(IF(MID(A2,4,1)="G",D2,D2+5)<=5,"",IF(MID(A2,4,1)="G",D2,D2+5)) =IF(IF(MID(A2,4,1)="F",D2,D2-10)<=5,"",IF(MID(A2,4,1)="G",D2,D2-10)) どうすればよろしいのでしょうか?どうかご教授よろしく願いいたします。

  • Excel97で、If文をなんとかしたい

    IF文でなんとかなりそうなんですが、IF文を使った事がなくて。 A列   B列   C列    任意の位置のセルD 数式  文字列   数式  文字列 数式  文字列 数式  文字列 こんな表で、Bの文字列の値と、Dのセルの値が一致した時、Aの数式の値(数字)をCの列に表示させ、BとDの文字が一致しない時は、”エラー”を表示させたいんですが、どういう風にすればいいのでしょうか? IF文を使えばいいのでしょうか? どういう風に、数式を立てればいいのかわかりません。 どなたか詳しい方、教えていただけませんか?

  • 文字列操作の関数はIF関数で使えない?

    いつもお世話になります。 下記のように顧客情報を入力しています。(()内はセルの番号です。) コード(A1) 名前(B1) 〒(C1) 住所(D1) 市町村(E1) 顧客の残高を管理するために市町村(E1)に住所から数式で取り出したい(○○市~15-1→○○)のですが、市、町、村、区(~市…区)が混在しているからか上手くいきません。 色々調べたところ、下記の数式でSEARCH関数を使用するとキレイに表示できたので使用したいのですが、"町"、"村"、"区"についてもいいっぺんに出来る方法が分かりません。   =LEFT(D1,SEARCH("市",D1)-1) IF関数を使いたいですが、上手くいきません。 何か良い方法はあるでしょうか? よろしくお願いします。

  • IF関数で結果が♯VARUE!のとき...

    EXCEL2000で、IF関数を使用しています。 条件式で,結果が♯VARUE!の時は、正を返したいのですが、うまくいきません。 教えて下さい。 実際に組んでいる式です。 =IF(FIND(" ",I6)=0,LEFT(I6,LEN(I6)),LEFT(I6,FIND(" ",I6,1)-1)) スペースがあればスペース前の文字列を返し、スペースがなければ全文字返すという式を組んでいます。 スペースがなければということで、FINDが0ならとしたのですが、上手くいかないため、エラーならば、という条件に変えようとしている次第です。 宜しくお願い致します。

専門家に質問してみよう