数式のエラーについての質問

このQ&Aのポイント
  • AというシートのAC19からAC4000までセルがA7と同一である場合、AのシートからF19からF4000までの中央値を返す数式を作成したが、AからHのシートを対象にするために数式を修正しようとしたところ、?NAMEエラーが発生してしまった。
  • AからHのシートを対象にした中央値を求めるために、A:Hの範囲を指定する数式を作成しようとしたが、?NAMEエラーが発生してしまった。
  • 数式のA:H!の部分のAが名前と認識されているため、?NAMEエラーが発生している。他の解決方法を知りたい。
回答を見る
  • ベストアンサー

数式のエラーについての質問

野菜と申します。 掲題の質問について、ご協力お願い致します。 AというシートのAC19からAC4000までセルがA7と同一である場合、AのシートからF19からF4000までの中央値を返す。 これを以下の様な配列数式で組みました。 {MEDIAN(IF(A!$AC$19:$AC$4000=$A7,A!$F$19:$F$4000,""))} ここから少しアレンジして、BからHまでAと同様のDATAがあり、上記数式を応用してAからHのシートを対象に上記の中央値を返したく、以下のような数式にアレンジしました。 {MEDIAN(IF(A:H!$AC$19:$AC$4000=$A7,A:H!$F$19:$F$4000,""))} 対象のセルは、どのシートも同一の場所にあるので、上記のような理解で組みましたが、?NAMEエラーが発生してしまいます。 数式のA:H!の部分のAが名前と認識されているようです。 私が求めている解には、この数式は不適合なのでしょうか? 他に良い数式がありましたら、ご教授お願い致します。

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

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

編集しているうちに、肝心な部分が抜け落ちてしまいました。 IFに対して範囲を指定する場合は、シート名にA:Hのような記述は使えません。 シート名をA:Hのように指定できるのは、集計関数などに限られます。

oyasaioyasai
質問者

お礼

私が求めた解決には届きませんでしたが、数式記述の間違いについてご指摘頂き、別方法への検討に切り替えるきっかけとなった事から、m-take0220様にベストアンサーを贈らさせて頂きます。 誠にありがとうございました。

oyasaioyasai
質問者

補足

なるほど、IFに対してはA:Hの記述は使えないのですね・・・。 別の方法を検討してみます。 ありがとうございます。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

検証はしていませんので的外れならごめんなさい。 http://kokoro.kir.jp/excel/3d.html 'A:H'! となるのかな?

oyasaioyasai
質問者

補足

試してみましたが、確定後 A:H!と同じ記述に変わってしまいます。

回答No.1

> 数式のA:H!の部分のAが名前と認識されているようです。 シート名に対して、A:Hのような記述はできません。

oyasaioyasai
質問者

補足

MEDIAN(A:H!$F$19:$F$4000)という数式で、AからHのシートのF19からF4000までの中央値は求めることは可能なのですが。 質問の内容な形では不可能になるのでしょうか。

関連するQ&A

  • Excelで数式のコピーが上手くいきません

    以下のことが出来ず困っています。  Sheet1のセルA1に「Sheet2!A1」、セルB1に「Sheet2!A2」が入っています。  このSheet1A1・B1の数式を横にコピーしたいのです。つまり、Sheet1C1にSheet2!A3~Sheet1F1にSheet2!A6というように数式の縦横が逆になるようにしたいのです。  さらに、上記で作成したSheet1のA1~F1までの数式を他の行にコピーしたいのです。A2に「Sheet2!B1」、B2に「Sheet2!B2」のようにです。  行列を入れ替える等やってみましたがダメでした。頭で考えていると訳がわからなくなります。  表内のデータ数が多いので手入力は避けたいです。  方法がありましたら教えてください。お願いします。

  • EXCELの数式について教えて下さい

    =IF(ISBLANK(H2)," ",IF(H2>1000,3000+6*700+6*(H2-1000),IF(H2>300,3000+7*(H2-300),"3000"))*65%) 上記の数式は正しくありませんか? H2セルに何らかの数値が入っている場合は「IF(H2>1000,3000+6....」以降の計算を行い、その結果が 隣のセル(I2)に出て、空白の場合隣のセルに空白で返す、ということをさせたいのですが、この数式ですとどうしても「#VALUE!」が返ってきてしまいます。 何か良い方法はないでしょうか?

  • Excelの数式の自動変更について

    excelの数式で困っています。 以下のようなシート1があります。 シート1 │A B C ─┼──── 1│a b c 2│d e f 3│g h i シート2で、以下の数式でシート1の値"e"を参照しているセルがあります。 =シート1!B2 この式では、シート1に行や列を挿入しても、"e"の値があるセルを参照したままになるように、数式が自動的に変更されます。 そうではなく、以下の条件を満たすような数式に変更したいと思っています。 ・1行と2行の間に行を挿入  →数式が自動変更され、"e"を参照したままにする ・A列とB列の間に列を挿入  →数式は変更されず、元々"e"があった場所を参照する 何かよい方法はないでしょうか? 回答よろしくお願いいたします。

  • 一度入れた数式がエラーになってしまいます。

    一度入れた数式がエラーになってしまいます。 一度入れた計算式がエラーになってしまい困っています。 関数を事前にフォーマットに入力しておいて、マクロを使って数値が以下のように入ります。 A  B  C  D 1    a    k    y    l 2    a    k    y    h 3    a    k    y    j 4    a    k    y    a ※列がずれて表示されていますが、A列B列… ということです。 「Dの行に文字が入っている、かつA行がaであるセルの数」を 以下のようにカウントしました。  =COUNTIFS(D1:D4,"*",A1:A4,a) マクロを組んであって、1~4の行は他シートから転記するようにしてあります。 このとき、 (1)数式の入っているセル、及び数式に関わるセルの書式は「数値」になっています (2)「ブックの計算」は「自動計算」になっています (3)マクロを動かした後、全く同じ数式を再入力すると正しく表示されます(エラーになりません) ご存知の方、ぜひ教えてください。 宜しくお願い致します。

  • エクセルについての質問です。こんなことはできるのでしょうか?

    エクセルについての質問です。こんなことはできるのでしょうか? まず「データ」という名前のシートのA列に動詞,名詞など品詞が入っています。B列に高1,高2など学年が入っています。C列に数字(2や3など)が入っています。D列に英単語が入っています。E列に日本語訳が入っています。F列は作業列でF2のセルに=IF(AND(A2=問題作成!$A$2,B2=問題作成!$B$2,AND(C2>=問題作成!$C$2,C2<=問題作成!$D$2)),ROW(A1),"")が入っており,以下のセルに数式がコピーされています。 次に「問題作成」というシートのA5セルに=IF(COUNT(データ!$F$2:$F$2294)<ROW(A1),"",INDEX(データ!D$2:D$2294,SMALL(データ!$F$2:$F$2294,ROW(A1))))が入っており,以下のセルに数式がコピーされています。B5セルには=IF(COUNT(データ!$F$2:$F$2294)<ROW(B1),"",INDEX(データ!E$2:E$2294,SMALL(データ!$F$2:$F$2294,ROW(B1))))が入っており,以下のセルに数式がコピーされています。 「問題作成」のシートのA2セルは動詞や名詞など品詞が選択できるようになっています。B2セルは学年が選択できるようになっています。 この後,C2セルにWordでページを指定して印刷するときのように,2-3,6,8のように入力すると,「データ」のシートからそのページに該当する単語のみを「問題作成」のA5,B5以下に引っ張ってくるようなことはできますでしょうか? また,入っている数式に問題があれば,お教え願いたいのですが。 よろしくお願いいたします。

  • 数式をずれないようにする方法

    こんにちは。 エクセル2010を使用しています。 エクセルして数式を使用して表を作成をしているのですが、どうしても縦行の挿入や削除をすると数式がずれてしまってエラーになってしまいます。 sheet1に入っている数式は、セルD6に「=IF(sheet2!F4,"○","")」と入っています。 sheet2に入っているD4~K4の入っているセルを削除・挿入をするとsheet1の数式がエラーになってしまいます。 なので$マークを入れたりもするのですがうまくいきません。 申し訳ありませんが、挿入・削除をしてもずれない方法とエラーにならない方法をどなたかご存知でしたら教えていただけないでしょうか? 宜しくお願い致します。

  • ExcelVBAの配列変数で一括でセルに数式を挿入する方法

    ExcelVBAの配列変数で一括でセルに数式を挿入する方法 ExcelVBAでTEST1シートを参照して、TEST2シートに数式を貼り付けたいと思っています。 例えばTEST2シートのA1セルには、TEST1シートのA1を参照する数式 =IF('TEST1'!A1="","",'TEST1'!A1))を挿入、 TEST2シートのA2セルには、TEST1シートのA2を参照する数式 =IF('TEST1'!A2="","",'TEST1'!A2))を挿入、 それをA1セルからZ10セルまで同様に数式を挿入したいと思っています。 以下のように配列変数を用いて、一括で挿入すると数式ではなく、文字が入ってしまいます。 Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI ※SUSHIKI←数式を入れた配列 どのような記述を行えば、数式を貼り付けることができるができるでしょうか。 できればOffsetを使用した形で作成したいです。 どうかご教授お願い致します。

  • 数式のコピーのズレを直す方法、マクロ、関数のいずれかの方法を教えてください!!

    数式のコピーのズレを直す方法、マクロ、関数のいずれかの方法を教えてください!! Sheet1には、計算結果が表示されるようにしてあります。 その結果の数式は、 =IF(Sheet2!A1="","",IF(Sheet2!A1<2,"<",ROUND(Sheet2!A1,2))) と、入っています。 計算結果の表示上、「Sheet1 A1とA2」の2行のセルを結合して1行にしてあって、対して「Sheet2はA1」の1行です。 これをつぎの「Sheet1 A2」に数式をコピペしていくと、 =IF(Sheet2!A2="","",IF(Sheet2!A2<2,"<",ROUND(Sheet2!A2,2))) と、していきたいのですが、 =IF(Sheet2!A3="","",IF(Sheet2!A3<2,"<",ROUND(Sheet2!A3,2))) となってズレてしまいます。 これを300行ほど作らなければならないのです。 数式、1行のセルを2行の結合したセルにコピペできる方法、もしくはマクロや他の関数があれば教えていただきたいです。 わかりにくくて申し訳ありませんが、お願いします。

  • EXCEL 2003 数式中の参照セルについて

    数式であるシート(シート1とします)中の値として、 別シート(シート2とします)のセルを参照するとします。 (例a) シート1中の値 =シート2!J36 ※ J36は例 ここまではよいのですが、 上記の行番号「36」の部分を 更に別の参照値から引っ張ってくることは可能でしょうか? やりたいことのイメージ例として以下に記載します。 (例b) =シート2!J(=A1) ※ここの「A1」はシート2中の参照するセル番号を指定するための シート1中に設けたセルとします。 ※上記の数式は実際にはエラーになり入りません。 最初の例aでは、シート2中の参照するセル番号を数式編集して 指定しないといけないため、参照箇所が多いと大変ですが、 もし、例bのような指定ができればシート2中の参照するセル番号の 入力は一箇所ですみ楽になりありがたいと考えています。 わかりにくい文章ですみません。よろしくお願いします。

  • VBAでダブルコーテーション入りの数式をセルにセットしたい

    VBAにて下記質問があります。 複数の質問を連続して投稿するのもどうかと思い、 不慣れなもので、1投稿で2種類の質問を記載いたしましたが、 迷惑等になるのであれば、削除後複数投稿にて再度投稿したいと思いますので、遠慮なくご指摘下さい。 さて、本文ですが、 1.VBAにてExcelのあるセルに数式をセットしたいのですが、数式内にダブルコーテーションがある為、上手くセットできません。 2.VBAでRange関数のパラメータを可変にしたい。 1について、 セットしたい数式 =IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3))) セットしたいセルをH44とした場合、単純に .Range("H44").Value = "=IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3)))" このように書いてエラーになってしまいます。 ダブルコーテーションがあるので当然だとは思うのですが、 回避の仕方がわかりません。 また、2についてですが、 「ワークシートに書かれた値をRangeのパラメータとして代入したい。」 仮にSheet1のA2のセルにA~Fまでのいづれかの値が入るものとする。 Range関数の列の指定はA2の値を参照し、代入したい。 A2の値:C worksheets("sheet1").Range("〇1”).Value 〇にCが入るようにしたい。 当然、A2がFになったらFが代入されるようにしたい。 色々検索し、調べてみたのですが上手く見つけられませんでした。 VBA初心者である為、上記説明が分かりづらいかもしれませんが、 分かる方おりましたら、ご教授の程、よろしくお願い致します。

専門家に質問してみよう