• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数、変数の設定について)

エクセル関数、変数の設定について

このQ&Aのポイント
  • エクセルで変数を使用して処理を簡単にする方法について教えてください。
  • セルに変数を設定し、その変数を使って SUMIF 関数を利用した計算を行いたいです。
  • 具体的な処理のための数式と、利用するセルの範囲についても教えていただけると助かります。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

INDIRECT関数だけで対応するなら、以下の式を入力して下方向にオートフィルすことになります。 =SUMIF(INDIRECT("Sheet2!C5:C"&$A$1),"1イ",INDIRECT(CHAR(ROW(A69))&"5:"&CHAR(ROW(A69))&$A$1))

fujiemili
質問者

お礼

ありがとうございました。助かりました。 当方超初心者で、しかし業務はこなさなければなりません。与えられた仕事を、「エクセルなんて見たことありません。出来ませんともいえず、・・・」この年でエクセルの勉強はきついです。 フォートランでしたら、自由にソフトが組めるのですが、畑違いの部門はつらい! 初心者で説明がおぼつかなくてすみませんでした。 もしできるなら、この数式が楽でいいのですが、超初心者にはまだ、理解できませんでした。

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

その他の回答 (5)

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

 回答番号:ANo.3,4です。 >超初心者にはまだ、理解できませんでした。  どの辺りが解らないでおられるのでしょうか?  数式の意味が解らないのでしょうか、それとも、数式をExcelに入力して行く方法が解らないのでしょうか?  もしかしますと、今現在は見慣れない表現に戸惑われて、「理解出来る筈が無い」という先入観に捕らわれておられるだけなのではないでしょうか。  コンピューター言語でプログラムを組む事が出来るのでしたら、Excelの関数は決して難しいものでは御座いませんから、落ち着いて、数式がどの様な関数の組合せから成り立っていて、数式中の各部分はどの様な働きをしているのかを調べて行けば、理解出来る様になると思います。  Excelの基本的な操作方法や使用する関数等に関しては、書店等にExcelの入門書や参考書が何冊も売られていますし、下記の様なサイトも御座います。 【参考URL】  Excel(エクセル)学習室   http://www.kenzo30.com/  よねさんのWordとExcelの小部屋|Excel(エクセル)入門/基本/上級/実用講座の総目次   http://www.eurus.dti.ne.jp/~yoneyama/Excel/Exl-_zen.htm  このまま「理解出来ない」で終わらせてしまっては、Excelの御仕事を進める事も出来ないと思います。  取り敢えずは、どういった処が解らないのかを御知らせ頂ければ、それに対して回答する事も出来るかと思いますので、補足されては如何でしょうか。

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

エクセル関数式で、「42」、「60」、「120」という数値(リテラル値という)を直接使わないのは、A1と言う番地を使い、A1に入れた数値で計算等するという便利さがあるからであう。 外に式複写の場合の行列部の変化を使えるとか。 そのA1の値を質問の式のどの部分で使おうとするのか。 42の例が出ているので、 Sheet2!$C$5:$C$42の42の部分を変えたいということか。 こんなことを回答者に推測でやらせようと言うのは乱暴で、質問者の質問内容の表現の不適切さ、その説明力の無いことのの証拠ではないか。 質問でははっきりさせること。 いずれにしろ、セル番地を可変にするには、INDIRECT関数しかないだろう。 INDIRECT関数の引数のセル番地は文字列で指定する。 A1の値が数値(例 42)であっても=INDIRECT("A"&A1)で、( )内は文字列になり、=A42セルと同じに扱ってくれる。

fujiemili
質問者

お礼

ありがとうございました。助かりました。 当方超初心者で、しかし業務はこなさなければなりません。与えられた仕事を、「エクセルなんて見たことありません。出来ませんともいえず、・・・」この年でエクセルの勉強はきついです。 フォートランでしたら、自由にソフトが組めるのですが、畑違いの部門はつらい! 初心者で説明がおぼつかなくてすみませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答番号:ANo.3です。  申し訳御座いません、1つ目の数式を記述する際に入力ミスが御座いました。 【誤】 =SUMIF(INDIRECT("Sheet2!C5:C"&$A$1-4),"=1イ",INDIRECT("Sheet2!R"&5&"C"&ROW(5:5)&":R"&$A$1-4&"C"&ROW(5:5),FALSE)) 【正】 =SUMIF(INDIRECT("Sheet2!C5:C"&$A$1),"=1イ",INDIRECT("Sheet2!R"&5&"C"&ROW(5:5)&":R"&$A$1&"C"&ROW(5:5),FALSE))

fujiemili
質問者

お礼

ありがとうございました。助かりました。 当方超初心者で、しかし業務はこなさなければなりません。与えられた仕事を、「エクセルなんて見たことありません。出来ませんともいえず、・・・」この年でエクセルの勉強はきついです。 フォートランでしたら、自由にソフトが組めるのですが、畑違いの部門はつらい! 初心者で説明がおぼつかなくてすみませんでした。 もしできるなら、この数式が楽でいいのですが、超初心者にはまだ、理解できませんでした。

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

 J6セルやL列は不要で、次の様な数式となります。 =SUMIF(INDIRECT("Sheet2!C5:C"&$A$1-4),"=1イ",INDIRECT("Sheet2!R"&5&"C"&ROW(5:5)&":R"&$A$1-4&"C"&ROW(5:5),FALSE)) 又は =SUMIF(OFFSET(INDIRECT("Sheet2!C5"),,,$A$1-4),"=1イ",(OFFSET(INDIRECT("Sheet2!D5"),,ROW(1:1),$A$1-4)))  もし、元データのリストに削除や切り取り等の編集作業が加えられる事が無い場合には、 =SUMIF(OFFSET(Sheet2!$C$5,,,$A$1-4),"=1イ",(OFFSET(Sheet2!$D$5,,ROW(1:1),$A$1-4))) で十分です。

全文を見る
すると、全ての回答が全文表示されます。
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

J6に「Sheet2!$C$5:$C$42」と入力されていて、42の数字だけ、A1のセルを参照したいということであれば、 J6を ="Sheet2!$C$5:$C$"&A1 という数式に書き換え、A1のセルに42とか60とか入力すればよろしかと思います。

fujiemili
質問者

お礼

ありがとうございました。助かりました。 当方超初心者で、しかし業務はこなさなければなりません。与えられた仕事を、「エクセルなんて見たことありません。出来ませんともいえず、・・・」この年でエクセルの勉強はきついです。 フォートランでしたら、自由にソフトが組めるのですが、畑違いの部門はつらい! 初心者で説明がおぼつかなくてすみませんでした。

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

関連するQ&A

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • エクセル関数のセル間の文字の代用について

    すみません。又教えてください。 C6には次の数式があります=SUMIF((INDIRECT($J$6)),"1イ",INDIRECT($L7))  B7には 1イ C7には次の数式があります=SUMIF((INDIRECT($J$6)),"1ロ",INDIRECT($L7))  B7には 1ロ C8には    ・・・・・・・・・  =SUMIF((INDIRECT($J$6)),"6ロ",INDIRECT($L7))  B8には 6ロ C9には    ・・・・・・・・・  =SUMIF((INDIRECT($J$6)),"2ロ",INDIRECT($L7))  B9には 2ロ  ・                                   ・  ・                                   ・ C25には次の数式があります。=SUMIF((INDIRECT($J$6)),"16イ",INDIRECT($L7))B25には16イ このようにセルCには数式の中に「1イ、1ロ、6ロ、2ロ・・・・」と同じ文字がセルBにも「1イ、1ロ、6ロ、2ロ・・・・・・・」とあります。 セルCの「1イ、1ロ、6ロ、2ロ・・・・」を直接書き込みしないで、既にあるセルBの「1イ、1ロ、6ロ、2ロ・・・・・・・」を使って、数式を使って? 何とか代用したいのですが、良い方法が分かりません。 セルCとセルBの「1イ、1ロ、6ロ、2ロ・・・・」はそれぞれ同じ順番です。 うまく質問できませんが、よろしくお願いします。 前回の質問に回答して頂いた皆さん、ありがとうございました。本当に助かりました。 ただ質問ばかりして申し訳ありません。私も勉強して1年後、2年後には皆さんの助けになれたら幸いです。

  • 2つエクセルデータを比較し、必要な情報を抽出する方法は?

    sheet1        sheet2      sheet3 19000001 a    19000001 a   19000001 aa 19000001 aa   19000002 b    19000005 ee 19000002 b    19000003 c 19000003 c    19000004 d 19000004 d    19000005 e 19000005 e    19000006 f 19000005 ee   19000007 g 19000006 f    19000008 h 19000007 g    19000009 i 19000008 h    19000010 j 19000009 i    19000011 k 19000010 j    19000012 l 19000011 k 19000012 l sheet1にあるデータから sheet2にはないデータをsheet3に抜き出したい できるだけ簡単な方法を教えてください

  • エクセルの関数の直し方

    現在、画像のような表を作成しておりますが、 1行目の前の行に5行挿入したいと考えております。 下の表からデータを製番・区分ごとに合計して上の表に表示されるようになっています。 5行挿入してタイトル等入れたいと思い、挿入してみると、 今まで下の表からの合計が上の表に表示されなくなってしまいます。 セル番号等確認はしてみたのですが、 どこがいけなくてうまく表示されないのかがわからなくて困っています。 どのように直したらいいかをご教示お願いいたします。 現在入っている関数は以下の通りです。 A2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(A1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(A1)),Sheet1!$L$14:$L$38,0),MATCH(A$1,Sheet1!$B$13:$I$13,0))) B2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(B1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(B1)),Sheet1!$L$14:$L$38,0),MATCH(B$1,Sheet1!$B$13:$I$13,0))) C2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(C1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(C1)),Sheet1!$L$14:$L$38,0),MATCH(C$1,Sheet1!$B$13:$I$13,0))) D2=IF(A2="","",SUMIFS(Sheet1!$G$14:$G$38,Sheet1!$B$14:$B$38,A2,Sheet1!$H$14:$H$38,B2)) E2=IF(C2="","",IF(ISERROR(VLOOKUP(C2,list!$S$3:$T$6,2,0)),"",VLOOKUP(C2,list!$S$3:$T$6,2,0))) H14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),3,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),3,FALSE))) I14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),4,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),4,FALSE))) J14=IF(ISBLANK(B14),"",IF(B14<="J121100144","旧","新")) K14=IF(AND(B14<>"",H14<>"-"),B14&"_"&H14,"") L14=IF(AND(K14<>"",COUNTIF(K$14:K14,K14)=1),COUNTIF($K$14:$K$38,"<"&K14)+1,"")

  • 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"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • Excel

    今会社員一年目でExcelに苦労しております。 例えば下記のように、Excelのシートに変数があって1の部分と1に対応している英語の部分だけを取り出すにはどうすればいいんですか? どなたかご教示いただけませんか。 a   1 b   1 c   2 d   3 e   2 f   3 g   4 h   5 i   1 j   2 k   3 l   1 m   2 n   3 o   1 p   2 q   3 よろしくお願いします。

  • 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で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルの関数について

    ある条件によって判定をさせたいと思っています。 0~10の時・・・・A 11~20の時・・・B 21~30の時・・・C 31~40の時・・・D 41~50の時・・・E 51~60の時・・・F 61~70の時・・・G 71~80の時・・・H 81~90の時・・・I 91~100の時・・J  ある素点に対してこのような判定をさせたいとき、どのような数式を入れればよいでしょうか。すごく複雑なので困っています。よろしくお願いします。

  • エクセルの関数初歩

    エクセルのワークシートで分からないところがあります。 E+F-(G+H+I)=J Jの値を自動的に出すようにはどのように関数を指定すればよいのでしょうか。 E、F、G、H、I、Jはそれぞれ、売上げ、+売上げ、マイナス経費、マイナス経費2、原価、J=利益に対応しています。

  • エクセル関数でちょっと悩んでます。

    エクセル関数でちょっと悩んでます。 sheet1にセルB4、C4、D4、B5、C5、D5(グループ1)とI4、J4、K4、I5、J5、K5(グループ2)にデータが入っているとします。 sheet2のB3、C3、D3、E3、F3、G3にグループ1のデータを記入します。 B4、C4、D4、E4、F4、G4にはグループ2を入れたいのですが、sheet1からみて列7つ移動したものとして記入したいです。どうやればいいですか? 例えば、sheet2のB3には、=Sheet1!B4を入れれば反映されます。 sheet2のB4にはsheet1のI4を入れたいのですが、sheet1からみて列7つ移動した形でエクセル関数を使って表現したいのです。どうやればいいですか? =Sheet1!B4+?

専門家に質問してみよう