• ベストアンサー

IFの数式の作り方

いつも御世話になります。 A4のページに納品書と請求書をまとめたシート(納請書)があります。 このシートはとりあえずブックとしては3シート(納請書1~3)を用意してあります。 必要に応じ納請書4~増やします。 この時月締めになると1枚の請求書(月請求書)にまとめます。 月請求書について質問します。 No3 B17 =INDIRECT("納請書"&ROW(A3)&"!$B15") C17 =INDIRECT("納請書"&ROW(A3)&"!H2") D17 =INDIRECT("納請書"&ROW(A3)&"!C41") というように式を入れています。 この時納請書4を追加したときは上の式をB18 C18 D18とオートフィルしています。 この手動を自動化したく空白の時は空白のままにしたいのですが、ご指導いただけませんでしょうか。

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

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

例えばB17に入力する式は次のようにしてB18にオートフィルドラッグすればよいでしょう。 =IF(ISERROR(INDIRECT("納請書"&ROW(A3)&"!$B15"),"",INDIRECT("納請書"&ROW(A3)&"!$B15")) C17,D17に入力の式も同様に変更すればよいでしょう。 件名のNo4に =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!D18")),"",NDIRECT("納請書"&ROW(A4)&"!D18")) を入れました。とありますが、上の式でしたら次のような式にしてはどうでしょう。 件名のNo4に =IF(ISERROR(INDIRECT("納請書"&ROW(A4)&"!D18")),"",INDIRECT("納請書"&ROW(A4)&"!D18")) を入れました。

dorasuke
質問者

お礼

色々と勉強してやっと出来ました。 本当に有難うございます。 結果をご報告します。 B4 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!B15")),"",INDIRECT("納請書"&ROW(A4)&"!B15")) C4 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!H2")),"",INDIRECT("納請書"&ROW(A4)&"!H2")) D4 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!C41")),"",INDIRECT("納請書"&ROW(A4)&"!C41")) H4 =IF(ISERR(INDIRECT("納請書"&ROW(A5)&"!H51")),"",INDIRECT("納請書"&ROW(A5)&"!H51")) 完成してうれしさ一杯です。 今後ともご指導の程よろしく御願いします。

dorasuke
質問者

補足

ご協力誠に有難うございます。 下記ご報告します。 シート「納請書4」が無い場合と有りの場合のテストをしました。 1 =IF(ISERROR(INDIRECT("納請書"&ROW(A3)&"!$B15"),"",INDIRECT("納請書"&ROW(A3)&"!$B15")) は いすれも「数式がただしくありません」とでます。 =IF(ISERROR(INDIRECT("納請書"&ROW(A3)&"!$B15"),  ""  ,INDIRECT("納請書"&ROW(A3)&"!$B15")) で数式バー "" が黒に表示されました。 2 =IF(ISERROR(INDIRECT("納請書"&ROW(A4)&"!D18")),"",INDIRECT("納請書"&ROW(A4)&"!D18")) 警告はなにも出ませんでしたが値が返しません。 補足説明 「納請書4」を追加したときに「月請求書」に値が入るようにしたいのですが。 但し「納請書4」が追加されないときは「月請求書」の18行は空白になるようにしておきたい。 ※場合によっては「納請書5」「納請書6」と追加することはあります。 ※この納請書は顧客ごとブックとして入力し保存します。 「納請書4」          「月請求書」 B18(納品日)          B18(納品日) C18(管理No)  C18(管理No) C10(件名)           D18(件名) H51(金額)           H18(金額) 誠に恐れ入りますがご検討の程よろしく御願いします。

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

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 >空白の時は空白のままにしたい ⇒「空白」とは、対象シートが存在しないと認識していますので相違していれば読み捨て下さい。 =IF(ISERR(INDIRECT("納請書"&ROW(A3)&"!B15")),"",NDIRECT("納請書"&ROW(A3)&"!B15"))

dorasuke
質問者

お礼

ご指導まことに有難うございました。 いろいろとしている内に間違いが分かりました。 I が抜けているのに気づきました。 あなた =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!D18")),"",NDIRECT("納請書"&ROW(A4)&"!D18")) 私 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!B15")),"",INDIRECT("納請書"&ROW(A4)&"!B15")) 本当に有難うございました。 今後ともご指導の程よろしく御願いします。

dorasuke
質問者

補足

件名のNo4に =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!D18")),"",NDIRECT("納請書"&ROW(A4)&"!D18")) を入れました。 エラー表示で「#NAME?」と出ました。 D18とは 件名 No4の事です ※まずシート「納請書4」は用意されいないのを追加するのですが。

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

関連するQ&A

  • オートフィル

    恐れ入ります。 ご教授いただけませんか。 =納請書1!C42 とあります。 質問 1 C42はそのままで 2 納請書1 が 納請書2 納請書3 納請書4 という具合にオートフィルでしたいのですがご指導御願いします。

  • 印刷時に表示されないように

    WINDOWS XP EXCELL2003 いつも御世話になります。 現在は「条件付書式で 0より値が小さい フォントを白にしています。」 理由は 納請書2 以降にまだ値か入っていない場合、印刷をしないように対応しています。 ご指導を仰ぎたいのは 現在の数式が白のままで2行毎にパターンを追加した場合に ※ 図のように  ##### が表示されないようにするのには お知恵をお貸し下さい。 この時「=MOD(ROW(),2)=0」を条件書式を追加すると フォントの白 が設定できません。 それぞれに下記の数式が設定しています。 B15 =INDIRECT("納請書"&ROW(A1)&"!$B15") B16 =INDIRECT("納請書"&ROW(A2)&"!$B15") B17 =INDIRECT("納請書"&ROW(A3)&"!$B15") ここからは現在は作成していませんが受注が増えた場合は 納請書3 のコピーをして順次追加します。 B18(納請書4)~B24(納請書10)と取りあえず追加が可能です。 「納請書4」以降の場合 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!B15")),"",INDIRECT("納請書"&ROW(A4)&"!B15")) ~

  • オートフィルについて質問します

    オートフィルについて質問します エクセルでシート1の3列構成の表(1月分3列、2月分3列・・・・)を4列構成のシート2にコピーしてその表をオートフィルで24か月分の表を作るようにしたいのですが1月ごとに参照する列が1列づつ増えていってしまうのでまったく参照になりません。 シート1の『A1,B1,C1』『D1,E1,F1』をシート2のA1,B1,C1,D1(D1は空白)E1,F1,G1,H1(H1は空白)・・・・のようにオートフィル使えないでしょうか。 オフセットを使っても列番号は自動加算されないので1列ずつずれた参照になってうまくいきません。 ROWとかINDEXとか使わなくて出来ませんか。

  • 空白セルから連番をつける

    エクセル2000を使用しています。 1.B4に以下の式を入力し、C列に文字入力するとB列に連番がふるようにしています。     =IF(C4="","",ROW()-3) 2.B53までこの式をオートフィルし、50行の連番としています。     =IF(C4="","",ROW()-3)     =IF(C5="","",ROW()-3)     =IF(C6="","",ROW()-3)           ・           ・           ・     =IF(C53="","",ROW()-3) 3.B54は区切りのため空白となっています。 4.B55から再び連番を付けるため以下の式を入力しています。     =IF(B55="","",ROW()-54) ここからが質問ですが、4項の式をB4~B53からコピーペーストすると、     =IF(B55="","",ROW()-3) となるため、末尾の3を54に手入力により変更する必要が発生してしまいます。 コピーペースト後、式変更の必要ない関数は作れるでしょうか? 連続する場合はオートフィルを使いたいのでそこは崩さない方法です。 また、マクロは使わない方法でお願いします。

  • シートを追加したときにタイトルの連番も自動で

    WindowsXP EXCELL2003 いつも御世話になります。 納品書と請求書が一緒になった 「納請書」 がブックには3シートを用意しています。 受注が追加されるごとにこの「納請書3」のコピーとして追加します。 図で言うと「納請書4」という具合にです。 この場合 「納請書3」のコピーですからタイトルは B3 納品書(3) B32 請求書(3)   となりこれを B3 納品書(4) B32 請求書(4) と自動的に変えられる方法はないでしょうか。 可能ならばご指導いただけませんでしょうか。 ※現在は 入力規則 でその都度、手動で対応していますが結構変更ミスが多く防止をしたいためです。 シートのコピーのマクロは以下です。 Sub シートの追加() Dim NewNo As Integer NewNo = Sheets("月請求書").Index Sheets("納請書3").Copy Before:=Sheets("月請求書") ActiveSheet.Name = "納請書" & NewNo End Sub

  • 数式が入っているが空白にしたい

    初めて質問します。 いろいろ探したのですがたどり着けず思い切って質問しようかと思いました。    A   B   C      収入  支出  残高 1___5000_____________5000 2_____________200_____4800⇒(=C1+A2-B2) 3____400______________5200⇒(=C2+A3-B3) 4_______________________5200⇒(=C3+A4-B4) 5_______________________5200⇒(=C4+A5-B5) 上記のような数式をCのセルに入れているのですが、C4とC5の数値がそのままC3の答えを続けていくので、A4・B5に数値が入力されていない時はC4の計算がされない様、又、空白に表示させたいのです。 (アンダーラインは空白です) どうか初心者私に力を貸して下さい。 宜しくお願いします。 Excelのバージョンは2003です。

  • エクセルの数式がわかりません・・・またまたすみません

    また壁にぶつかってしまいました。 算数の問題なのですが頭が回りません。     A     B      C       D 1  請求額 ギャラ リーダー料  合計 2   :    :     :       B2 3    :     :     :        B3 4    :    :     :        B4 何がしたいかと言いますと、Aの請求額には消費税が入っています。 Bには普通に数字を入力します。 CはAの税抜き金額からBのギャラを引き、それを2で割った金額が入ります。(Cには数字を入力せず計算式で表示されるように) その式で出たC1~C4のリーダー料をD1に足したいのです。 つまり、AとBにのみ数字を入力するだけでCのリーダー料が計算され、そのリーダー料をD1の合計へ加算するということです。 説明がうまく出来なくてすみません。どうかよろしくお願いいたします。

  • マクロでのシートの連番について

    WindowsXP EXCELL2003 いつも御世話になります。 「マクロ実行」でシートの追加はすでに下記でご指導いただきました。 http://oshiete1.goo.ne.jp/qa5351508.html ご指導を仰ぎたいのは、 「納請書」が現在 1~3 迄は作成しています。 例えば 下記マクロを実行して このシート(納請書)を順次追加した時に シート名が「納請書4」「納請書5」「納請書6」と表示することは可能でしょうか Sub シートの追加() Sheets("納請書3").Copy Before:=Sheets("月請求書") ActiveSheet.Name = "納請書" & Worksheets.Count End Sub  このマクロで実行すると「納請書10」からはじまります。 現在、シート数は 9シートを使用している結果だと思います。 もし可能ならば、 ご指導よろしく御願いしくます。

  • ROW()関数の使い方について

    今、フィルタオプションを使わずに、 重複したデータが空白になるように関数を作っています。 B行に業務内容を書き込み(ミーティング、書類作成 など) C行に重複した業務内容を空白で表示させるという関数を 完成させたいのですが、ROW()関数を使い下にフィルしたとき、 『B$2:B3』の3という数字部分が1つずつ変わるようにしたいのですが、 下記式のような使い方ではエラーになります。 どのようにすればよいのでしょうか?    A         B           C         D 1 氏名    業務内容      業務内容 2 田中    ミーティング    ミーティング 3 田中    書類作成      書類作成 4 田中    ミーティング    (空白) 5  C4=IF(MATCH(B4,"B$2:B"&ROW()-1,0),"",B4)

  • 条件にあう複数の行を別のシートに抽出する

    例 データ Sheet2のA1に(条件の)2 Sheet1 A列  B列  C列  D列 コード 名前 計数 1 A 12 2 B 13 1 2 B 14 2 4 D 15 5 E 16 6 F 17 2 B 18 3 3 C 19 5 E 20 D列は =IF(A2=Sheet2!$A$1,MAX($D$1:D1)+1,"") 下方向に式を複写。 Sheet2に行って =INDEX(Sheet1!$A$1:$D$100,MATCH(ROW()-1,Sheet1!$D$1:$D$100,0),COLUMN()) 式を右方向に式複写 A2:C2の式を下方向に式複写。 結果 2 2 B 13 2 B 14 2 B 18 #N/A #N/A #N/A ーー #N/Aを空白にするには ROW()-1がSheet1のD列のMAXを超えていると空白と いうIF文を加えると良い。   以前、上記のように質問のご回答を頂いたのですが、更に質問があって再度聞きたくて、再質問します。上記の場合は、「2」だけでしたができました。それで後の2以外の「1~6」について、Sheet3・4・5・6・7に抽出したいと思いますが、関数では無理でしょうか。初心者で色々な記事もみますがよくわかりません、お教え下さいませんでしょうか、お願いします。

専門家に質問してみよう