• ベストアンサー

難しいExcelの計算式ですが…

例 顧客番号  契約日  商品金額  状況 1001     10/1   10,000円  契約 1002     10/2   20,000円  契約 1003     10/3   10,000円  契約 1002     10/3   -20,000円  キャンセル 1004     10/4   20,000円  契約 1002     10/6   20,000円  契約 上記のようなデータベースがあるとして、 別シートに 顧客番号  契約日  商品金額 (手入力)  (自動) (自動) を作りたいのです。 商品金額の自動は、関数DSUMを使い、なんとか出来ましたが、契約日が出来ないのです。 顧客番号の最新の契約日を出したいだけなのですが。。 条件 ピボットテーブルを使わない。 わかる方がいましたらお願いします。。

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

  • ベストアンサー
  • WWolf
  • ベストアンサー率26% (51/192)
回答No.1

契約日が確実に日付順であればVBAでもかんたんですが、関数でDMAXというのがあります。 例えば A列   B列 No.    日付 1    10/01 5    08/03 4    02/04 3    06/05 4    11/12 5    07/19 5    12/03 1    03/15 3    05/04 とある場合、仮にC2に条件、D2に結果を表示したい場合・・・C1にNo.、D2に=DMAX(A1:B10,2,C1:C2) とすると条件(C1)に5であれば12/3、条件を1にすれば10/1とでます。

master9999
質問者

お礼

すばやい返答ありがとうございます。 DMAXで簡単に出来ました。 ありがとうございました。

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

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

配列数式を使ってみては? 仮に、 データシート名:[DATA] A列:顧客番号 B列:契約日 … で2行目から10行目までデータがあるとします。 別シート:A1:顧客番号 B1:契約日  とした場合、 B1に次の式を書込み、[Ctrl] + [Shift] + [Enter] で計算式を確定させます。 =MAX(IF(DATA!A2:A10=A1,DATA!B2:B10,0)) 計算式が {=MAX(IF(DATA!A2:A10=A1,DATA!B2:B10,0))} となればOKです。

master9999
質問者

お礼

すばやい返答ありがとうございます。 簡単に出来ることができました。 色々な方法がありますね。 参考になります。ありがとうございました。

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

全然難しくない問題では無いでしょうか。 誤解しているかも知れないが。 (例データ)Sheet1のA1:D7 顧客番号 契約日 商品金額 状況 1001 1月10日 10,000円 契約 1002 2月10日 20,000円 契約 1003 3月10日 10,000円 契約 1002 3月10日 -20,000円 キャンセル 1004 4月10日 20,000円 契約 1002 6月10日 20,000円 契約 (関数式:Sheet2)Sheet2のA1:D1に 顧客番号 契約日 商品金額 状況 B列の書式を日付にしておく。 B2に=IF(A2="","",VLOOKUP($A2,Sheet1!$A$2:$D$7,COLUMN(B2),FALSE))といれる。 C2、D2に式を複写する。 B2:D2の式を、D2で+ハンドルを出して、下に引っ張って複写する。 (B2:D2だけで良いなら、下の行への複写は必要なし) COLUMN()を使わず、B2を=IF(A2="","",VLOOKUP($A2,Sheet1!$A$2:$D$7,2,FALSE)) C2を2を3に、D2は2を4にしても同じ。

master9999
質問者

お礼

すばやい返答ありがとうございます。 簡単に出来ることができました。 色々な方法がありますね。 参考になります。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • jindon
  • ベストアンサー率43% (50/116)
回答No.2

一行目がタイトルで A2から顧客番号 B2から契約日 C2から商品金額 D2から状況 として、 E1に顧客番号(表題) E2に検索顧客番号を入力 F1に契約日(表題) F2に =IF(E2="","",MAX(IF((A2:A7=E2)*(D2:D7<>"キャンセル"),B2:B7))) として、Ctrl + Shift + Enter で確定(配列式) {式}の形になりますので確認してください。 G1に商品金額(表題) G2に =IF(E2="","",SUMPRODUCT((A2:A7=E2)*(B2:B7=F2),C2:C7)) E2に顧客番号を入力すると A列が入力された顧客番号で、D列がキャンセルではない F2に契約日の最大値(最新日) A列が入力された顧客番号で、B列がF2の日付の G2に商品金額 を返します 注意:同じ顧客番号で、最新日が同日のレコードがある場合は、先のものが返ります

master9999
質問者

お礼

すばやい返答ありがとうございます。 簡単に出来ることができました。 色々な方法がありますね。 参考になります。ありがとうございました。

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

関連するQ&A

  • エクセルデータをVBAを使って集計する方法

    エクセルのデータを次のように集計したいのですが、良い方法を教えて下さい。VBAに組み込みたいのですが。 元のデータは次のような項目に分かれています。 (納入日)(契約番号)(取引先)(商品名)(数量)(金額)  納入日毎に1件づつ入力されているのですが、これを、取引先別、商品別に数量と金額を集計したいのです。 集計項目が2項目あるため、ピボットテーブルで集計すると、1件が2行になってしまい、後の加工がしづらいのです。 今のところ、ピボットテーブルで数量と金額を別々に集計して、後でVLOOKUP等の関数を使って表を1つする事を考えているのですが、もっと良い方法をご存知ないでしょうか。

  • エクセル関数を使って月別・商品別売上表を作成したい

    1列目売上月、2列目商品名、3列目売上金額からなるデータベースを作成し、このデータベースを基に月別、商品別の売上表を作成する場合、通常はピボットテーブルを使いますが、都度ピボットテーブル更新手続きを省くため、あらかじめ縦方向に売上月、横方向に商品名を入れた表を作成しておき、テーブルにレコードが入力された時点で即、この表に入力結果を反映させたい場合、セルにどのような関数を入力すればよろしいでしょうか。 配列により全セルに関数を一発で入力できるようなことができればうれしいのですが。

  • エクセルで利益計算などがしたい

    輸入スケジュール&売掛金、買掛金、利益をエクセルを使ってしたいと思っています。 これらを1個のエクセルでシートは別でかまいません。 1.輸入スケジュール&利益計算 PURCHASE ORDER No.  顧客名 部品番号 注文数量 単価(FOB) ETD/HK(日付) ETA/JAN(日付) 倉庫納入日(日付) 納入日(日付)※顧客に納入した日 納入数量 売り単価 経費(送料など) これらをできればオートフィルターで顧客名と納入日を選択したら、 ○月の納入数量や利益が出たらいいな~なんて思っているんですが、 複雑なのでフィルターだけでは無理ですよね?? データ管理などでよく聞く、ピボットテーブルやIFよりも難しい関数を使わないと無理でしょうか? 当方、エクセルの基本、IF関数などしかわからず、困惑しております。

  • エクセルで各品毎の合計を出すには

    エクセルで納品書を作ったのですが、 何軒もある顧客の納品書の中から、共通した商品の合計価格を 自動で計算させるにはどのようにすればいいでしょうか? 例えば、A B C D という名前の顧客があって、あ い う え お という商品があり、 A~D の (あ)なら(あ) という商品の売り上げ数と売上合計金額を出したい。という感じです。 (あ~お まで、全部出るようにしたいです) 商品の単価は顧客毎に、少し違っていたりします。 vlookup関数を使うのかなぁ、とか思ったりするのですが、納品書は何枚にもなっているし、 データベース?(よく分かってません)みたいなのを使うのかな、とか。 分かりやすく教えてもらえるとありがたいです。 エクセル2010です。 エクセル2003の場合も教えてもらえると、なおありがたいです。 書き足らないところがあれば言って下さい。 よろしくお願いいたします。

  • Accessでの顧客管理DB作成方法について

    Accessの中では非常に基本的な事ですので恐縮ですが、実際にデータベースを作成していて上手くいかないものでアドバイスをいただければ助かります。 使用バージョンは未だにAccess97です・・・ 2つのテーブルを使用して顧客の管理を行おうと考えています。 1つめのテーブルは「顧客情報」 2つめのテーブルは「保有商品」 といったもので 「顧客情報」テーブルには「顧客番号」「顧客名」「顧客住所」 「保有商品」テーブルには「購入日」「購入商品」 をまとめたいと思います。 入力フォームには --------------------------------------------------- 「顧客情報」テーブル 「顧客番号」「顧客名」 「顧客住所」 --------------------------------------------------- 「保有商品」テーブル 「購入日」「購入商品」 「購入日」「購入商品」 --------------------------------------------------- といった単票形式の1つのフォームで作成を考えています。 上記のデータベースを作成するにあたって効率的なリレーションシップやクエリーなどをご教授していただけませんでしょうか。 よろしくお願いいたします。

  • Excelでどうやれば良いのでしょうか?

    一行のデータに売上だと番号、日付、商品、金額。取り消しだと番号、日付、商品、金額(プラス表示)されたデータがあります。これを番号ごとに商品の金額、件数(一行のデータ=1件です)の合計を出したいのですが。どのようにすれば良いのでしょうか?ピボットテーブルを使っおうと思ったのですがうまくいきません。。 番号 商品 金額 ・・・・(他のデータもあります) 1  A  \1,000 2  B  \2,000 2  A  \3,000 3  A  \5,000 2  A   \500(取り消し) 2  A   \300   ↓    A       B 1 \1,000 1件    2 \2,800 2件  \2,000 1件 3 \5,000 1件

  • エクセルの関数

    以下のデータベースがあるとします。 商品名 販売個数 はちみつ   1 砂糖      3 塩        5 はちみつ   2 砂糖      3 数字の列がずれているように見えるかもしれませんが数字は同じ列にあると思ってください。ここからはちみつや砂糖など各商品の合計販売個数を導き出す関数を教えてください。ピボットテーブルではない方法でお願いします。

  • エクセル計算式(ピボット)

    ピボットで、個人別にA、B、C、D それぞれの商品の購入金額と、 それらを足した合計購入金額の表を作りました。 で、A、B、C、Dを足した合計金額が150,000円以上なら A ○○○円:1 B ○○○円:2 C ○○○円:3 D ○○○円:4 という風にピボットの金額の右横(ピボット欄外)に連番をつけたいのです。 いろんなパターンを例にあげますと、Aのみで購入金額が150,000円の場合は A150,000円の横に「1」、 B30,000円、C5,000円、D130,000円で合計金額が165,000円の場合は、 B30,000円の横に「1」、C5,000円の横に「2」、D130,000円の横に「3」、 A10,000円、B10,000円、D50,000円で合計金額が70,000円の場合は、 合計が150,000円以下なので連番振らない。 といった感じです。 説明が足りなかったらすみません。宜しくお願い致します。

  • 別テーブルの計算について

    accessでショッピング状況のデータベースを作成しているのですが、「会員情報」というテーブルと「商品詳細」のテーブルがあり、商品A500円を購入する時にポイント50Pを「会員情報」のポイント欄に自動的に足したいのですがどのような計算式?(関数)を入れればよいのですか? また、ポイントで購入する時はポイント数を「商品詳細」テーブルに入力すると「会員情報」テーブルのポイントフィールドから引きたいのです。 ご教授下さい。お願い致します。

  • ACCESS2003でデータベースを作成します

    Access2003でデータベースを作成します。 以下の入力項目があるのですが、どう正規化したらよいのかわかりません。 お助けください。 ・顧客ナンバー ・顧客名 ・生年月日 ・年齢 ・住所 ・電話番号 ・身長 ・体重 ・性別 ・来店日 ・購入物 ・購入金額 これが一つなのですが、もう一つテーブルで ・商品名 ・価格 のデータベースも作りたいのです。 購入物を入力するとこのテーブルから価格を引っ張ってきて、 購入金額合計を出すようにすることも予定しています。 また来店日、購入物などの履歴は来店の度に入力があるので、 顧客ナンバーとは別のテーブルにすべきなのはわかるのですが・・・ よろしくお願いします。 このほかに必要な情報がありましたらご指摘ください。

専門家に質問してみよう