• 締切済み

エクセルの関数

   日付  社員名    内容  名前       金額       9月18日 松田一郎  新規  青木一郎     6,000  9月18日 松田一郎  新規  赤堀一子     6,000  9月25日         解約  流石一郎        0  9月27日         解約  五十嵐一郎       0  9月 9日 石田一郎  新規  笹川一郎     6,000    日付  社員名    内容  名前       金額  9月11日 田中一郎  新規  佐藤一郎     6,000 12月25日         解約   佐藤一郎       0 *新規登録から3ヶ月を超えた場合は、手数料を支払う。    日付  社員名    内容   名前       金額  9月11日 田中一郎   新規  佐藤一郎    6,000 11月20日          解約   佐藤一郎  0 *新規登録から3ヶ月以内に解約したので、手数料を支払わない。 名前の列で検索し、同じ名前・新規からの日付が三ヵ月以内・内容が 解約の場合は金額列は0にする。 名前の列で検索し、同じ名前があったら、同じ行の日付の列を参照し てその日付と新規で登録した時の日付を比較して三ヵ月以内の解約な ら支給しない、三ヵ月以上継続したら支給する。 この式を関数を使って作りたいのですが、どうしも解りません、何方 かお教え下さい。 何分にも自分のやりたいことの説明も十分にできないレベルなもので すから宜しくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

内容+名前の情報を作って検索すれば可能だと思います。 まず、「3ヶ月前」の日付を簡単に得る為に、アドオンの分析ツールを有効にしてください。 次に先頭に1列挿入します。 これで、B列:日付、C列:社員名、D列:内容、E列:名前、F列金額 となったとします。 A1に =D1&E1 と入れて下までコピー。これで内容+名前の情報が出来ました。 空いているG1に =IF(D1="解約",VLOOKUP("新規"&E1,A:B,2,FALSE),"") と入れて下までコピー。 内容が「解約」の場合、「新規」+名前で検索してその時の日付を取得します。 次にH1に =IF(ISNUMBER(G1),IF(G1<=EDATE(B1,-3),1,0),"") と入れて下までコピー H列で取得した新規の時の日付が解約の日付の3ヶ月以内なら0、それ以上なら1を表示します。 このH列が手数料になります。 ただし、同姓同名の人が何度も新規、解約を繰り返した場合は考慮していません。

cfab
質問者

お礼

ご回答頂きありがとうございます、参考にさせていただきます。 ・・・・・・・同姓同名の人が何度の新規・解約を繰り返すんです場合もあるんです、申し訳有りません。

すると、全ての回答が全文表示されます。
  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.1

多分、テーブル構造を変えるか、アクセスに移行したほうが楽です。 少なくとも、社員名の空欄に名前を入れること そうしないと、解約日が何から3ヶ月以内なのか、条件抽出ができません。ソートもできません そうでなければ、ユーザ1名は1行にすること(解約、解約日の列を増やす) エクセルの基本は、データ1件毎に1行です。 この場合は、契約者が1件のデータなので、契約者1名が1行に入るように列の項目を設定します。

cfab
質問者

お礼

大変参考になりました。 ありがとう御座いました。 また何かありましたら、アドバイスをお願いします。

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

関連するQ&A