エクセルの数式・関数を教えてください

このQ&Aのポイント
  • エクセルの数式・関数を使用して、入力シートの日付データを請求書シートに埋め込む方法を教えてください。
  • 期間は請求日の前月の1ヶ月間を指定します。
  • 参考となる数式を教えていただければ助かります。
回答を見る
  • ベストアンサー

エクセルの数式・関数を教えてください。

入力シートにデータがあり、請求書シートに期間を参照して日付を埋め込みたいと考えています。 期間というものは、請求シートの請求日の前月1ヶ月間を考えています。 入力シート    a    b     c     d 1 日付  商品1  商品2  商品3 2 12/7    100   200   300 3 12/15    40    50   60 4 1/7      70    80   90 請求シート  請求日(AR3)  請求内訳日付欄(C12:C42) C12などの欄の数式で、セルAR3の日付の前月の日付範囲で入力シートの日付欄を抽出したいのです。 いろいろ調べましたが、なかなかうまくいかず困っています。 参考となる数式を教えていただければ、助かります。

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

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

 今仮に、入力シートのシート名が 入力 であるものとします。  まず、請求シートのC13セルに次の関数を入力して下さい。 =IF(ISNUMBER(1/DAY($AR$4)),IF(ROWS($C$13:$C13)>COUNTIF(入力!$A:$A,"<"&DATE(YEAR($AR$4),MONTH($AR$4),1))-COUNTIF(入力!$A:$A,"<"&DATE(YEAR($AR$4),MONTH($AR$4)-1,1)),"",SMALL(入力!$A:$A,ROWS($C$13:$C13)+COUNTIF(入力!$A:$A,"<"&DATE(YEAR($AR$4),MONTH($AR$4)-1,1)))),"")  次に、請求シートのD13セルに次の関数を入力して下さい。 =IF($C13="","",VLOOKUP($C13,入力!$A:$D,MATCH(D$12,入力!$A$1:$D$1,0),FALSE))  次に、請求シートのD13セルをコピーして、請求シートのE13~F13の範囲に貼り付けて下さい。  次に、請求シートのC13~F13の範囲をコピーして、同じ列の14行目以下に貼り付けて下さい。  以上です。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 一例です。 ↓の画像で左側が「入力シート」右側が「請求シート」だとします。 「入力シート」に作業用の列を設けます。 作業列E2セルに =IF(請求シート!$AR$3="","",IF(A2>=EDATE(請求シート!$AR$3,-1),ROW(),"")) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そして「集計シート」のC12セルに =IF(COUNT(入力シート!$E:$E)<ROW(A1),"",INDEX(入力シート!A:A,SMALL(入力シート!$E:$E,ROW(A1)))) という数式を入れF12セルまで列方向にオートフィルでコピー! C12セルの表示形式は「日付」にしておいて、 C12~F12セルを範囲指定 → F12セルのフィルハンドルで下へコピー! これで画像のような感じになります。 ※ EDATE関数を使用するにあたり、Excel2003以前のバージョンですと メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。m(_ _)m

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

 回答:No.1です。  説明し忘れていた事がありました。  入力シートの日付欄に入力されている日付は、必ず年も付けて 2011/12/7 2011年12月7日 H23.12.7 平成23年12月7日 の様な形式で表示される様に、セルの書式設定の表示形式を[日付]の 2001/3/14 2001年3月14日 H13.3.14 平成13年3月14日 等に設定して下さい。  それから、先程の回答させて頂いたANo.1において挙げさせて頂いた方法は、入力シートの日付欄に入力されている日付に重複して入力されたもの(例えば、2行目に2011/12/7が入力されているにも関わらず、2行目以下のどこかの行にも再び2011/12/7が入力されている等)がありますと、正しい値を表示出来ない恐れがあります。  もし、各商品欄に入力される値が数値のみである場合には、関数を入力する際に、請求シートのC13セルとD13セルに入力する関数を、それぞれ次の様な関数としておきますと、日付が重複して入力されていた場合においても正しい値を表示する事が出来ます。(但し、こちらの場合には、該当日における数値の合計のみが表示され、文字情報等は無視されます) 請求シートのC13セルに入力する関数 =IF(AND(ISNUMBER(1/DAY($AR$4)),C12<>"",COUNT(入力!$A:$A)),IF(COUNTIF(C$12:C12,SMALL(入力!$A:$A,COUNTIF(入力!$A:$A,"<"&DATE(YEAR($AR$4),MONTH($AR$4),1)))),"",SMALL(入力!$A:$A,COUNTIF(入力!$A:$A,"<"&INT(IF(ISNUMBER(1/DAY(C12)),C12+1,DATE(YEAR($AR$4),MONTH($AR$4)-1,1))))+1)),"") 請求シートのD13セルに入力する関数 =IF($C13="","",SUMIF(入力!$A:$A,$C13,OFFSET(入力!$A:$A,,MATCH(D$12,入力!$1:$1,0)-COLUMN(入力!$A$1))))

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

簡単な方法: 請求シートのA2セルに =IF(AND(DATE(YEAR($AR$3),MONTH($AR$3)-1,DAY($AR$3))<=入力シート!A2,入力シート!A2<=$AR$3),入力シート!A2,"") と記入,以下コピーして埋めておきます。 入力シートの日付から,期間内の日付が並びます。 #「前月1ヶ月間」のイミが違うなら,適切な期間を設定した数式に修正して下さい。 #請求シートを汚したくなければ,別のシート3とか使ってください。 C12には =IF(COLUMN(A12)>COUNT($A:$A),"",SMALL($A:$A,COLUMN(A12))) と記入,日付の書式を取り付けて右にコピーして並べておきます。

関連するQ&A

  • エクセルの数式を教えてください。

    請求書内訳を作成しているんですが、 どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。 ■Sheetの詳細 Sheetは2種類あります。 Sheet1:請求書内訳 (顧客名、契約金額、合計金額)*顧客へ送るもの。 Sheet2:顧客名のコード表 (顧客コード、顧客名、契約金額) ■したいこと 「顧客コードを入力すると、顧客名と契約金額が表示される仕組み」を作りたいのです。 VLOOKUPを使ってみたのですが… Sheet2のデータを参照し、Sheet1の顧客名欄に顧客名を表示することはできましたが、 Sheet1へのコードを入力により、Sheet1へデータ(顧客名)を表示させる(Sheet2より引き出す)ことができませんでした。 *Sheet1の顧客名欄で使用した式はこちらです。 =VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) 説明が分かりにくくて申し訳ありませんが、Sheet1へのコード入力のみで、 Sheet2からSheet1へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

  • エクセル数式教えてください

    エクセルの数式を教えてください! 参考書をみても適当な数式を探しだせませんでした・・ 売上をのせた一覧表を別シートに飛ばす方法です。 SHEET1  A  B   C  D   1   10日 11日  12日 2ペン 100  150  210 3靴  900  840  920  4鞄  1000  790  980  SHEET2  A  B   C   D 1   12日  11日  10日 2ペン 3鞄 4靴 販売項目(シート2のA列)と日付(シート2の1行目) を入れるとシート1から数字が飛ぶ数式を教えて下さい!

  • エクセル 複数条件で検索する数式を教えてください。

    社員の作業時間入力シートが2つあり、それぞれに入力しているため、入力ミスによる誤差が生じます。それをチェックしています。 検索条件が複数になる場合の計算式を教えてください。 [sheet1]   A   B   C   D  E 1 社員CD 日付  作業時間1 作業時間2  誤差 2 1000 2008/1/1   3.5  ここに数式   =C2-D2 3 1000 2008/1/2  2.5    数式    =C3-D3 4 1001 2008/1/1   5.0    数式    =C4-D4 [sheet2]   A   B   C    1 社員CD 日付  作業時間2 2 1000 2008/1/1  3.0 3 1000 2008/1/3   1.5 4 1001 2008/1/1  5.5 sheet1のD列にsheet2のC列を表示させたいのですが、 条件はA列とB列が一致するものになります。 A・B列が文字列ではないため、1列挿入して=A2&B2列を作成することができませんでした。 D列に数式をいれる事で一発で表示させる方法を教えてください。

  • EXCEL 数式・関数でソートしたい

    数式・関数でソートする方法を教えてください。 A列に日付、B列に品名、C列に個数が入ったSheet1があります。 これを日付順にソートしたSheet2をつくりたいと思っています。 Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。 よろしくお願いします。

  • エクセルの数式

    エクセルで数式を入力したとき、数式の欄をクリックすると、用いたセルの部分と対応するように数式にも色がつきます。 別のシートのセルの値を用いた場合も同様に、クリックしたらどのシートの、どのセルの値を用いたか簡単にわかるようにできますか? Sheet1!R[162]C[2]などからどのセルを用いたかを判断するのが面倒です。 以前はできたような気がするのですが。 (最近別のパソコンを使用し始めました) よろしければ教えてください。

  • エクセルの関数について、詳しい方助けてください。

    業務で使用しているエクセルのファイルの関数についての質問です。 毎日の売り上げを品目別に纏めているファイルなのですが、どうしても分からない関数があり困り果ててしまいました。 横軸はC4からAG4にかけて、本日より31日前までの日付を連続で表示しており、縦軸は6から42にかけてデータを入力欄があります。 C4にはTODAYを入力してありますので日付が変わればC4からAG4の日付も変わるといった状態なのですが、6から42の縦軸の入力欄を日付と連動させて動かしたいのです。(イメージとしては、日付が変わると、Cの欄は空白になって、当日のデータを打ち込めて、過去のデータはその右にずれて表示されている感じです)過去31日間のデータを日付と連動させて動かすことなど可能でしょうか?分かりにくい文章で大変恐縮ですが、詳しい方ご教授いただければ幸いです。 よろしくお願いします。

  • エクセル 数式を教えてください

    エクセル数式の本をみても、どうしても設定できない数式があります。 (そもそも、やりたい内容に対応する数式があるのかすら わからないのですが・・) 店舗運営用で係設定をしているのですが、係だけを抽出した 別の表を作成したいと思っています。 A列には日付が1~31日・1行目には人名(全店員分)がはいった表 があります。 例:閉店業務当番を☆マークでシフトの表に設定しています。   エクセルではないですが、雰囲気はこんな感じです。     山田 鈴木 森    1 早  遅  ☆   2 ☆  早  遅   3 休  ☆  遅   4 ☆  早  休   5 遅  ☆  早  ↑ 上記のような表とは別に☆だけついている人のシートを   作成したいです。            ☆       1 森       2 山田       3 鈴木       4 山田       5 鈴木  現在のところ、目でさがしてて入力しています。  ⇒日付を入力すると、その行から☆をさがして、そこに対応する   人名を表示させる数式を知りたいと思っています。  説明が分かりにくいとは思いますが、宜しくお願いいたします!!        

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

    初心者です。 宜しくお願い致します。 会社で使用するフォーマットを作成しておりますが、以下の場合にどのような数式(関数?)を使用したらよいかアドバイスお願い致します。 単純に一日料金で貸す機材と、時間で貸す機材があるので、式がうまく作れません。 (1)一日料金の場合・・単価×数量=金額 (2)時間貸しの場合・・単価×時間×数量=金額 作成したいフォーマットはお客様への請求明細書になるのですが 予め数式を入力しておいて、あとはベタ打ちすれば良いだけの物 が希望なのですが、(2)の為の数式を「金額」欄に入れておくと、 時間貸しの商品の場合は当然計算されますが、一日料金の場合は 「時間」欄に入力しないので、「0」になってしまいます。 (1)の場合でも「0」にならない数式がありましたら、是非教えて 頂けると助かります。 どうぞ宜しくお願い致します。

  • 条件に合致するものだけを別シートに表示

    エクセル2003を使用しています。 Sheet1に日付とともに商品出荷データが入力されています。 Sheet2~Sheet13までの12ヶ月分のシートにsheet1で入力された日付を元に、抽出表示したいと思います。 sheet1 商品コード 商品名 出荷日 A001 ABC 2012/6/10 A089 AZZ 2012/6/19 B006 BAA (出荷されていない物は日付の入力無し) C006 C4587 2012/7/6 Sheet2以降のA1セルには、201206 のように年月を入力しておき、抽出条件とします。 また抽出表示項目は、Sheet1に入力されている全ての情報です。 (商品コードから出荷日まで) このような表示にさせたい場合の、式を教えて頂けないでしょうか?  どうぞ、よろしくお願いします。

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

    エクセル2007にて、企業用の住所録を作成しています。 何百件かある住所録の中から、検索して一つの住所録をラベルシートを使って住所を印刷したいと考えています。調べた結果、ワードの差し込み印刷機能を使うと便利のようですが、使い勝手など総合的に判断した結果、この方法は諦めました。 そのため、エクセルで全てを作ろうとしましたが、壁にぶち当たってしまいましたので、アドバイスを頂けると幸いです。 現在、sheet1にデータベース(住所録)。sheet2にデータ抽出ページ。sheet3を印刷用のページ。にそれぞれ設定しています。(sheet2で抽出と印刷が出来ればベストでしたが、印刷時に選択した部分の印刷にしたくないので諦めました) 質問ですが、sheet2のデータの関数に関してです。宛て名が企業名のみの一行のものと、企業名・担当者名の二行のものがあります。データベースのシートにあらかじめ「御中・様」を宛先と共に入力しておくのも一つの方法だと思いますが、データを他でも共有できるよう「御中・様」の付け足しをsheet2で行いたいと考えています。 企業名に関しては、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&" 御中" の数式でうまくいきました。  C1…抽出するデータ(住所録)の番号  L1…抽出するデータ(住所録)のセルの位置 ただ、担当者に関しては、 すべての住所録において担当者までの記載がないため、上記と同じ式を用いると、当たり前ながら「様」のみが表示されてしまいます。 この「様」をデータ(住所録)がない場合は、表示しないようにするには、数式をどのように入力すればよいのでしょうか?IF関数を使ってみましたが、うまくできませんでした。 こちらが現在入力している、担当者名ようの数式です。 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)  C1・L1のセルの意味は上記の企業名と同じ意味です。  ちなみに、ゼロ値のセルにゼロ表示するのチェックは外していますので、データがない場合は、空白になっています。 文章が長くなってしまいましたが、よろしくお願いします。

専門家に質問してみよう