• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでの入れ子の工夫)

エクセル入れ子数式の工夫方法とは?

このQ&Aのポイント
  • エクセルの入れ子数式の制限を克服する方法をご紹介します。
  • 2003バージョンのエクセルでは、8個までしか入れ子数式を使用することができません。
  • 商品名に応じたサイズのリストを作成する方法をお教えします。

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

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

どんなにサイズの項目を増やしても対応できる方法です。 例えばG1セルから下方にサイズ、G2セルにS、G3セルにM,G4セルにG5セルにL,G6セルにXL,G7セルにS,G8セルにM,Lなどと、商品に必要な数だけ入力します。 その上でC1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ISERROR(INDEX(G:G,ROW(A1)-MATCH("",B$1:B1,-1)+1)),"",IF(INDEX(G:G,ROW(A1)-MATCH("",B$1:B1,-1)+1)=0,"",INDEX(G:G,ROW(A1)-MATCH("",B$1:B1,-1)+1))) B列のどの位置からでも商品名を入力することでC列にはお望みの表示がされます。

yuyuyuyuu
質問者

お礼

お騒がせいたしました。 以下の関数で解決いたしました。質問ではF列がC列です。 =IF(B10="",IF(F9="サイズ","S",IF(F9="S","M",IF(F9="M","L",IF(F9="L","XL",IF(F9="XL","S",""))))),"サイズ")

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 質問者様がどうしたいのかが今一つ不明確なので補足願います。 >=IF(B20="",IF(B19="",IF(B18="",IF(B17="",IF(B16="",IF(B15="",IF(B14="",IF(B13="",IF(B12="",IF(B11="",IF(B10="",IF(B9="",IF(B8="",IF(B7="",IF(B6="",IF(B5="",IF(B4="",IF(B3="","","XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"サイズ") という関数では、B19セルが空欄ではない場合には、「サイズ」と表示するのは判るのですが、B20セルが空欄ではない場合には、何と表示したいのかが記されておりません。  又、御質問文の関数では、例えば、B3セルが空欄ではない場合において「XL」と表示するのは、B4~B20の範囲にあるセルが全て空欄となっている場合のみとなり、B4~B20の範囲にあるセルの内、B7、B11、B15以外のどれか一つでも空欄ではないものがある場合には、例えB3セルが空欄ではなくとも「XL」とは表示されない事になりますが、その様な働きをする関数を求めておられるのでしょうか?  それとも、例えばB3セルに商品名が入力された場合には、必ずC3セルに「XL」と表示させたいのでしょうか?  もし、前者だとしますと、次の様な関数となります。 =IF(COUNTIF($B$3:$B$20,"*?"),INDEX({"XL","L","M","S","XL","L","M","S","XL","L","M","S","XL","L","M","S","サイズ","B20が空欄ではない場合"},MATCH("",B3:B20,-1)),"")  或いは、 =IF(COUNTIF($B$3:$B$20,"*?"),IF(B20="",IF(B19="",INDEX({"XL","L","M","S"},MOD(MATCH("",B3:B20,-1),4)),"サイズ"),"B20が空欄ではない場合"),"")  御質問文にある関数と同じ働きをして、且つ、入れ子が少なく済む関数は以上の様なものとなります。  しかしながら、御質問文にある関数で出来る事と、ANo.1様の御回答に対する質問者様の御補足に記されている「やりたい事」は、内容が全く異なっています。  もし、 >B1に商品名を入れるとC1に「サイズ」、C2に「S」、C3に「M」、C4に「L」、C5に「XL」、C6に「S」・・・」と下に20個くらい自動で入れるようにしたいのです。 のでしたら、まず、C1セルには次の関数を入力して下さい。 =IF(INDEX($B:$B,ROW())="","サイズ")  次に、C2セルには次の関数を入力して下さい。 =IF(INDEX($B:$B,ROW())="","",INDEX({"S","M","L","XL"},MOD(ROWS($2:2),4)))  そして、C2セルをコピーして、C3以下に貼り付けて下さい。  ANo.1様の御回答に対する質問者様の御補足に記されている「やりたい事」を実現させる方法は以上です。  尚、、「御質問文にある関数」と「ANo.1様の御回答に対する質問者様の御補足に記されている『やりたい事』」の内容が異なっているため、当然ながら、「御質問文にある関数と同じ働きをする関数」と「ANo.1様の御回答に対する質問者様の御補足に記されている『やりたい事』を実現させる関数」では、表示される結果も異なるものとなりますし、質問者様がどうされたいのかが不明確であるため、上記のどちらの方法も、質問者様の御期待に沿えるかどうかも不明となってしまいます。

yuyuyuyuu
質問者

お礼

お騒がせいたしました。 以下の関数で解決いたしました。 =IF(B10="",IF(F9="サイズ","S",IF(F9="S","M",IF(F9="M","L",IF(F9="L","XL",IF(F9="XL","S",""))))),"サイズ")

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

IF関数を3つ以上(ぐらい)ネストする式を考えたら、ほかにマシな関数は無いのか、考えるべきだ。 初心者がよくIFを多段ネストした質問を出すが、関数の勉強不足が多い。 それは通常VLOOKUP関数MATCH関数などの場合が多い。こんな関数を知っていて、使えないと確信して、質問しているのか。 さて本件はどうなのかな。 >B列に商品名を入れるとC列に「サイズ、S、M、L、XL、S・・・」と下に20個くらい自動で入れるようにしたいのです。 の書き方があいまいではっきり判らない。 商品名に対応して、対応行隣列に、一律に商品に対応した記号文字を入れるならVLOOKUP関数のTRUE型かな。 質問にはシートの行列のデータ実例を少数挙げて質問すること。また複雑な式をコピペするだけでなく、データの特徴や、やりたいことも文章でも内容を説明のこと。 (いそがしい回答者にも読み解かせる時間をとらないよう配慮すること) どうも簡単なVBAプログラムでも組んだほうが簡単なのかな。S、M、L、XL、S・・・を入れるセルがB列が空白かどうかで 影響を受けるようだ。最終行空白セルを探すEnd(xlUp)を使う質問かな。

yuyuyuyuu
質問者

お礼

ご丁寧に回答頂きありがとうございます。無事解決いたしました。

全文を見る
すると、全ての回答が全文表示されます。
noname#142124
noname#142124
回答No.2

前の方のところの補足は見たんですが、こんな感じでしょうか。。。 違ってたらすみません。 B1に商品名を入れるとしたら  C1 → IF(B$1="","","サイズ")  C2 → IF(B$1="","","S")  C3 → IF(B$1="","","M") 以下同じような感じでできないでしょうか?

yuyuyuyuu
質問者

お礼

ご丁寧に回答頂きありがとうございます。無事解決いたしました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

andを併用する。  例:=IF(AND(A1="",B1=""),1,0) workセルを使う。 例:C1に=A1 & B1 としておき、=IF(C1="",1,0)

yuyuyuyuu
質問者

お礼

回答ありがとうございます。 大変申し訳ないのですが、頂いた回答ではちょっとどうすればいいのかわかりませんでした。 もしかしたた質問の仕方が悪かったのかもしれません。 補足で訂正いたしました。

yuyuyuyuu
質問者

補足

B列に商品名を入れるとC列に「サイズ、S、M、L、XL、S・・・」と下に20個くらい自動で入れるようにしたいのです。 ↓ 例えば、B1に商品名を入れるとC1に「サイズ」、C2に「S」、C3に「M」、C4に「L」、C5に「XL」、C6に「S」・・・」と下に20個くらい自動で入れるようにしたいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • IFの入れ子7個以上をEXCEL2003で使いたい

    EXCEL2003でIFの入れ子が7個までしか使えませんが、 関数またはVBAを使って7個以上の入れ子を機能させるには どうしたらいいでしょうか。 やりたいことは、ピボットテーブルで使いやすいように 文字列データを別の列にコピーしたいのですが、 元データにはいろいろな文字列が順不同で入っており、 それを取り出すのにIFの入れ子を多様しています。 たとえばこんなデータなのですが、 商品番号 商品タグ          売上金額 No1    ■果物■りんご       1000 No2    ■野菜■きゅうり      2000 No3    ■果物■みかん       1000 No4    ■野菜■にんじん      2000 No5    ■果物■りんご       1000 No5    ■果物■りんご       1000    No6    ドリンク          1000    商品タグには 大カテゴリ 果物、野菜 中カテゴリ 果物の場合、りんご、みかん       野菜の場合、きゅうり、にんじん と分類されています。 一つのセルに大カテゴリと中カテゴリの両方が入ります。 これを中カテゴリをキーにしてピボットテーブルで集計したい場合、 下記の様もう一つ列を作り、そこに集計したいものだけが入った データを作らなければなりません。    A     B             C     D 1商品番号 商品タグ          売上金額 中カテゴリ 2No1    ■果物■りんご       1000   りんご 3No2    ■野菜■きゅうり      2000   きゅうり 4No3    ■果物■みかん       1000   みかん 5No4    ■野菜■にんじん      2000   にんじん 6No5    ■果物■りんご       1000   りんご 7No6    ドリンク          1000   その他 商品タグは実際にはこの前後にたくさんの文字列があり、 文字数も決まっていませんので、文字列を取り出すには search関数やmid関数などを使って取り出しています。 また、取り出したい文字列が含まれていない場合は すべて「その他」と入力したいのです。 セルD2には下記の式を入れています。 =IF(ISERROR(MID(B2,SEARCH("■りんご",B2),3)=TRUE), IF(ISERROR(MID(B2,SEARCH("■みかん",B2),4)=TRUE), IF(ISERROR(MID(B2,SEARCH("■きゅうり",B2),5)=TRUE), IF(ISERROR(MID(B2,SEARCH("にんじん",B2),5)=TRUE),"その他","にんじん"),"きゅうり"),"みかん"),"りんご") これをIFの入れ子7個以上でも使えるようにするには、どうしたらいいでしょうか。

  • Excelの「&IF」について

    Excelの「&IF」について Excelで表を作っている最中、複数条件指定に困っています。 どなたかお助けいただけないでしょうか。 目的: サイズ毎の規定数を超えた時の数値を計算したい 用途: S、M、L、XLの4種類があり、それぞれが入力できる最大規定数が決まってます。 ※ S(1~2)、M(1~3)、L(1~4)、XL(1~5) 下記のような計算式を作ったところ、期待通りの数値が返って来ませんでした。。 =IF(AND(A2="Sパッケージ",B2>2),B2-2,0)&IF(AND(A2="Mパッケージ",B2>2),B2-3,0) どなたかご教授いただけないでしょうか。 宜しくお願いいたします。

  • Accessでのデータ管理

    Access1日目の初心者です。 商品(洋服)のデータ管理をしようとしていますが、リレーションを活用した複数テーブルの上手な使い方を教えてほしいです。 今は、商品(名)は同じだけど、サイズの違い、価格が違う商品を1つのマスターテーブルで管理しようとしています。 例 - 商品マスターテーブル 商品ID|商品名|サイズ|定価 1S | スウェット | S | 1000 1M | スウェット | M | 1200 1L | スウェット | L |1400 1XL| スウェット | XL |1600 2S | パーカー | S | 1000 2M | パーカー | M | 1200 2L | パーカー | L |1400 2XL| パーカー | XL |1600 1商品で4列~もレコードを使うので、1つのテーブルのデータ量が増えてしまって、もっとうまく出来ないかと思い質問しました。 洋服など、1つの同一商品名でサイズ違いあり、サイズ別に定価も違う場合は、どのようにリレーション等を活用して、データ管理するのがベストなのでしょうか?

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • if関数の入れ子の制限で助けていただきたい。

     ゴルフのスコアー表を作っています。各々のメンバーのスコアーを算出し、ランキングを作成したのですが、順位がばらばらになってのランキングされます。そこで1位○●さん2位○△さん・・・最下位○×さんと並べ替えるのにIF関数を使いました。が、入れ子の数がオーバーしてしまい、並べかえられませ。スコアー表は50名分までエントリーできるようにしてあり、A列が会員ナンバーB列が氏名・・・J列が順位。 L列に1位からの並べかえた数字を入れてあり、それを参照するIF関数を=IF(J3=1,B3,if(j4=1,b4,if(j5=1,b5,if(j6=1,b6,if(j7=1,b7,if(j8=1,b8,if(j9=1,b9,if(j10=1,b10,if(j11=1,b11,if(j12=1,b12,if(j13=1,b13,"")・・・・・””)))))))))))))) としようと思ったのですが、どうやら入れ子は7つまでが限界らしいので困り果てました。 どうぞ、お助け下さい。 現在エクセル2000使用。 IPHONEのDocmento To Goで最終的に使いたいと思ってます。

  • エクセルの「IF+VLOOKUP」に関してのよくある問題で、意味のわからない相対参照があります

    「1.セル【C18】にセル【B18】の「商品コード」に対応する「商品名」を返す数式を入力して下さい。「商品一覧」の表を参照すること。 次に、「商品コード」が入力されていない場合は、「商品名」にエラーが表示されないように数式を修正して下さい。(シートに表があり、IF+VLOOKUPを使う問題です) 2.セル【C18】の数式をもとに請求書の表を完成させて下さい」(←「【C18】の下の行も同じように、商品コードから商品名を表示させれるように完成させなさい」っていう問題です) 上記のような問題があったのですが、 数式を入力して下にオートフィルして 完成させたのですが、【問題の解答】を見た限りでは 「セル【C18】を「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」と修正する」 と書いてありました。 ですが、数式の「$B18」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?

  • エクセル 複数行ある同一商品を1行にまとめるには?

    同一内容が入力された複数行の合計を出す方法を教えてください。     エクセルの表でA列に商品名、B列に色の種類、C列~E列にサイズごとの個数がある、まったく同じ商品が、複数行にランダムに掲載されています。 A列、B列で同一の情報を持つ商品について、C列~E列のサイズごとの合計を出したいのです。 例)商品名、色、サイズ個数(C列:Sサイズ、D列:Mサイズ、E列:Lサイズの順です。) A1:Tシャツ B1:ホワイト C1:5 D1:4 E1:3   A2:Tシャツ B2:ブラック C2:3 D2:5 E2:5 A3: Tシャツ B2:ホワイト C3:3 D3:3 E3:2 A4: Tシャツ B2:ブラック C4:3 D4:2 E4:3 各商品が300行程あり、オートサムではやりきれません。 すべての各商品(A列、B列が一致するもの)を1行ごとにまとめたシートを作成するにはどうしたら良いでしょうか?

  • エクセルでのコピー変換作業

      A B    C D 商品コード1 商品名1   商品コード2 商品名2  1000      A         1000     A  1001      A(sale)       1000      A  1002       B           1002       B   ・        ・            ・      ・    ・        ・           ・        ・  1500       AA         1500      AA   1501      AA(sale)       1500     AA という表があります。 A列とB列が入力しており、C列とD列を手作業で今変換しています。 このC列とD列を自動で入力するようにしたいです。 A列商品コード1、B列に商品名1が入力されています。 B列には商品名が同じで語尾に(sale)とついているものがあります。 それを商品コードも商品名も(sale)に合わせたものがC、D列に入ります。 以上の内容を出来る数式、もしくはマクロをご教授下さい。 わかりにくい表現あれば補足致します。よろしくお願いします。

  • エクセルVBA 全ての組み合わせを作る

    エクセルVBAで、全ての組み合わせを表現する方法を教えてください 既にA列に色、B列に数字、C列にサイズが入力済みだとします   A  B  C 1  色  数字 サイズ ←タイトルの行 2  赤   1  S 3  青   2  M 4  緑   3  L (完成例)   D  E  F 1  色  数字 サイズ ←タイトルの行 2  赤   1  S 3  赤   1  M 4  赤   1  L 5  赤  2  S 6  赤  2  M 7  赤  2  L 8  赤  3  S 9  赤  3  M 10 赤  3  L 11 青   1  S 12 青   1  M 13 青   1  L 14 青  2  S 15 青  2  M 16 青  2  L 17 青  3  S 18 青  3  M 19 青  3  L 20 緑   1  S 21 緑   1  M 22 緑   1  L 23 緑  2  S 24 緑  2  M 25 緑  2  L 26 緑  3  S 27 緑  3  M 28 緑  3  L ・全ての組み合わせが表現できていれば、2~28行目は上の完成例の順番でなくてもいいです ・完成はD~F列の上から(2行目から)結果を反映させ、空白行を作らないようにする ・今回はA~C列の4行まで入力されている例をあげましたが、実際はA~C列の何行まで入力されているか随時変更します ・A~C列のデータ入力は、必ず上から(2行目から)されています ・A~C列のデータ入力は、5行目以降に続くこともあります ・A~C列のデータ入力は、データがない場合もあります (データ入力がない場合)   A  B  C 1  色  数字 サイズ ←タイトルの行 2      1  S 3      2  M 4         L (この場合の完成例)   D  E  F 1  色  数字 サイズ ←タイトルの行 2      1  S 3      1  M 4      1  L 5     2  S 6     2  M 7     2  L 空白行が出来てしまってはいけないので、『まずデータ入力されている列を認識し、認識した列の情報で全ての組み合わせを作成する』という考え方なのかな?と思ったのですが、そのようなことをエクセルVBAでできるのでしょうか もし分かる方がいたら教えてください よろしくお願いします

  • エクセルで作成できますか?

    91個の材料を使って商品を作ります。商品にはサイズがS.M.LあってSを1個作るには材料を2個、Mを1個作るには材料を3個、Lを1個作るには、4個それぞれ使います。 91個内で各サイズを作るとき、どのサイズを基準にしてもサイズ毎の作成可能数を表示できるようにエクセルで作成可能でしょうか? 例えば、 Sサイズを18個と入力したら自動でMサイズの作成可能数、Lサイズ作成可能数が計算できるようにしたいのですが。また、基準をSサイズだけでなく、Mサイズ、Lサイズどのサイズを先に入力しても計算できたらなお助かります。

専門家に質問してみよう