• ベストアンサー

セル式・indirectで他のシートを参照

cj_moverの回答

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 EXCELに関するご質問として、お応えします。 直接的な答えとしては、 =SUMIF(INDIRECT("損益!M"&Q25&":M"&Q26),">0",INDIRECT("損益!M"&Q25&":M"&Q26)) または一般的に、 =SUMIF(INDIRECT("損益!M"&Q25&":M"&Q26),">0") というような結果をお求めなのかと思います。 SUMIF()関数の引数については、 第一引数と第三引数が同一のセル範囲を参照する場合、 第三引数を省略するのが通常です。 仮に、第三引数を指定する必要がある場合は、そちらも[セル範囲]を指定する必要がありますから、 [セル参照を表す文字列]を指定するのは誤りということになります。 INDIRECT()関数の引数には、ひとつ、セル参照を表す文字列を指定します。 構文上、INDIRECT()の括弧の中に、カンマで区切った複数の引数を指定するのは誤りです。 別シート上の(単一ではない)セル参照を表す方法の基本例ですが、  損益!A2:A11 のように、  「シート名」!「起点セル」:「終点セル」 という書式で書いた方が、演算上のロスも無く、エラーを起こす機会も減ります。  損益!A2:損益!A11 のように書いても多くの場合で同じ結果を返すので、絶対にダメ、とまでは言いませんが。 ご質問冒頭の数式については、 =SUM(INDIRECT("損益!M"&P25&":M"&P26))です。 この書き方の場合、P25,P26が両方とも未入力だった場合に =SUM(損益!M:M)の計算結果を返します。 例えば、 =SUM(INDIRECT("損益!M"&P25&":損益!M"&P26))のような指定をしてしまうと、 =SUM(損益!M:損益!M)という数式は成立しませんから、必然的に#REF!を返すことになります。 以上、ご参考まで。

2014itochan
質問者

お礼

誠に 明快 ありがとうございました。

関連するQ&A

  • エクセルのセルを参照して別シートに張り付ける2

    こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。(sheet2には値として張り付けたい) <条件> sheet1の3行目から下(3000行目まで)をコピーしてsheet2の2行目から下(3000行目まで)に張り付けたい。 しかし、下記のように列も入れ替えたい。下記以外はコピーしない。 sheet1   sheet2  A  →  A  G  →  B  H  →  I  M  →  G  Q  →  K R+S  →  L  (sheet1のR列とS列の文字を結合したもをsheet2のL列に)  T  →  M  U  →  N このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • エクセルでデータの最後の行に行挿入後の合計されない

    エクセルで文字・数値データを作成しております。その最後の行に合計(SUMとSUMIFを使用)を出す表があります。 データの最後の行(合計の前)に行を挿入しデータ数値を入力すると、SUM(SUMIF)の合計が、前にあったデータまでしか、合計されません。 単純な計算では、行を挿入しても合計されるのに、ナゼ今回は出来ないのでしょうか?原因が分かる方は、いらっしゃいませんでしょうか? 宜しくお願い申し上げます。

  • Excelで、セルと同じ名前のシート名の・・・

    Sheet1のA5セルに『関東』とあり、その隣(B5セル)に、別シートである『関東』と名前がついているシート内のX列合計を求める方法を教えてください。 X列の合計といっても、S列に『自動車』『火災』『傷害』とバラバラに項目が並んでいて、X列の『自動車』のみの合計を算出したいのです。 これまでは =SUMIF(関東.csv!S:X,"自動車",関東.csv!X:X) で値を求めていたのですが、『関東』シートを削除して、翌月に更新された内容の新しいシートをつけると、 =SUMIF(#REF!S:X,"自動車",#REF!X:X) となってしまい、逆に不便でした。 毎月シートを入れなおさなければならないので、何か良い方法があれば、ご教示いただきたいです。 よろしくお願いいたします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • 【エクセル】行番号の変動する参照セルを式に入れたい

    エクセル2002を使用しています。 別シートに算出した合計金額を、シートを替えた表に、各桁をセルに振り分けたいのですが、合計金額が特定のセルである場合はできました。 合計する元データは、少ないときは1件、多いときは150件以上あるので、合計金額を算出するセルは行が変動します。 このようなときに、関数式に組み込む方法を教えていただきたいのです。 MAX関数やMATCH関数を使えばよいとアドバイスをいただいたのですが、それでもよく分からなく、質問させていただきます。 現在のシート等の状況です。 【合計金額を算出しているシート】 シート名・・・・・・・差込データ 合計金額を算出しているセル・・・・・・・行G(現在はセルG152にあります) 合計金額としての項目名・・・・・・・・・列Bに”合計”と表示しています。 【各桁に分けるシート】・・・・・印刷用の様式になっています。 シート名・・・・・・・金種連絡票 入力セル・・・・・・・セルH9からセルP9の9桁 現在、桁を分割するために使用している関数式(*********は半角スペース9個です) セルH9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,9),1,1)) セルI9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,8),1,1)) セルJ9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,7),1,1)) セルK9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,6),1,1)) セルL9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,5),1,1)) セルM9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,4),1,1)) セルN9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,3),1,1)) セルO9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,2),1,1)) セルP9・・・・・・・=(MID(RIGHT("*********"&差込データ!$G$152,1),1,1)) この関数式の【差込データ!$G$152】を変えればよいのかと思ったのですが、うまく行きません。 よろしくお願いいたします。

  • 【VBA】SUMIFを別シートから参照する方法

    半端な知識で切り張りして書きましたが SUMIFのコードでコンパイルエラーとなります。 ご教示宜しくお願いします。 'ws1は、アクティブシート(=SUMIFを入力するシート) Set ws1 = Worksheets("アクティブシート") 'ws2は、参照するシート Set ws2 = Worksheets("参照するシート") 'Hani1は、ws2のA2セルから最終行迄 Set Hani1 = ws2.Range("A2:A" & LastRow) 'Hani2は、ws2のH2セルから最終行迄 Set Hani2 = ws2.Range("H2:H" & LastRow) 'n4はアクティブシートの2行目から最終行迄 For n4 = 2 To LastRow2 'アクティブシートのCn4セルから順に、An4セルに合致するものについて Hani1、Hani2を参照してSUIFする Range("C" & n4).Formula = _ "=SUMIF(Hani1,ws1.Range("A" & n4),Hani2)" Next n4

  • 参照するセルに関数が入っていると#VALUE!に

    いつもお世話になります。 WIN7 EXCELL2010 です。 年度を変更し時にO列の最終行(参照図ではO24)が変わりその時、最終行以降のセルに関数が入っているとI/J列に#VALUE!が出ます。 年度を変更した時のエラーを解決したいのですがご教示いただけませんでしょうか。 O列は B列から参照した値をN列に取り込みそれを詰めたものがO列です。 この時N列の最終の値をとったO列の最終行以降(O24)のセルに関数を入力していると I /J 列にエラーが発生し、 その解決策として、この場合で言うと O25 からは関数を入れずに対応するとエラーがでません。 I /J 列にそれぞれの日数を求めるのですが参照するのはO列です。 参考 B6 =DATE($B$4,1,1) B8 =DATE(B$4,1,14-WEEKDAY(DATE(B$4,1,0),3)) G2 =DATE($B$4,H2,1) I2 =NETWORKDAYS(DATE($B$4,H2,1),DATE($B$4,H2+1,),$Q$1:$Q$49) J2 =K2-I2 K2 =DAY(DATE(YEAR($B$3),MONTH(G2)+1,0)) M1 =IF(B6="","",B6) N1 =IF(M1="","",COUNT($M$1:M1)) O1 =IF(COUNT($M$1:$M$42)<ROW(M1),"",SUMIF($N$1:$N$42,ROW(M1),$M$1:$M$42)

  • EXCELで別シートのセルを参照する場合について

    EXCELで別シートのセルを参照したいのですが… 参照先のセルの行が飛び飛びのため、数式をどのようにしたらよいかわからず困っています。入力するセルの数も大量のため、一つ一つ参照入力するには手間がかかりすぎるため、何かしらの関数で対応できないでしょうか。 具体的には シートAのM8~CE8 に、シートBの G50 J50 M50 P50…と3列ごとに参照した数字を返したいのです。 どなたかご教示いただけますと幸いです。 よろしくお願いいたします。

  • エクセル2003 #N/A含む複数シート数値合計

    複数のワークシートの数値の合計がうまく出ません。 A,B,C,Dという名前のシートのセルA2の数値の合計を 「集計」というシートのセルA3に出したいのですが (ちなみにA,B,C,DシートのセルA2にはvlookup関数がはいってます) 例えばシートBのセルA2の表示が#N/Aだと sum、sumif関数で合計を出そうとしても 「集計」シートのセルA3には#valueと出てしまいます。 うまく#N/Aをのぞいて数値の合計値を出す方法はありますか?