- ベストアンサー
エクセルの関数について
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3です。 Excelでは、日付の1900/1/1と数値の1がイコールになります。 同様に、1900/1/2と2、1900/1/3と3、…がイコールになります。 要するに日付は 「1900/1/1を1日目として、そこから数えて何日目にあたるか」 の数値として内部的に処理されているわけです。 ですから数値の「15」を入力して、セルの書式を日付に変えると 見かけ上「1900/1/15」になります。 日付の「2010/2/15」を入力して、セルの書式を標準や数値に変えると 見かけ上「40224」になります。 ですから、私の回答の場合はQ列とR列の書式を日付に変えればいいです。 (作業列なのでそのままでもかまわないですが) No.2さんの回答の場合は逆に書式を標準か数値に変えればいいです。
その他の回答 (4)
- minosennin
- ベストアンサー率71% (1366/1910)
#2です。 E列の書式設定を「数値」に変更してみてください。 現在は、書式設定が「日付」の設定になっているため「1900/1/15」のような表示になっています。
- don9don9
- ベストアンサー率47% (299/624)
表示させたい入金予定日は、何年何月何日といった具体的な日付ですよね? (「月末」「20日」などではなく、「2009/12/31」「2010/1/20」など) であれば、VLOOKUP関数で顧客ごとの支払日を引くだけではなく それと売上日から入金予定日を計算しなければなりません。 もし「月末」「20日」などで十分であるなら、以下は読み飛ばしてください。 仮に「売上日以降の、直近の支払日」を計算するとします。 作業列を3列使います(P,Q,R列を使うとします) 作業列無しでも出来なくはないですが、式がややこしくなるので… P3に =VLOOKUP(D3,例2!$A$1:$B$3,2,FALSE) ※「例2!$A$1:$B$3」の部分は、別リストの範囲ですので適宜変更してください これを最終行まで複写します。 これでこの列には、支払日のパターンが入ります。(月末なら31、20日なら20など) Q3に =IF(MONTH(D3)<>MONTH(DATE(YEAR(D3),MONTH(D3),P3)),DATE(YEAR(D3),MONTH(D3)+1,0),DATE(YEAR(D3),MONTH(D3),P3)) これを最終行まで複写します。 これでこの列には、売上日と同月の支払日が入ります。 なぜこのような計算をしているかというと、月末の日付は 年月によって28日~31日の間で変動するからです。 R3に =IF(MONTH(D3)+1<>MONTH(DATE(YEAR(D3),MONTH(D3)+1,P3)),DATE(YEAR(D3),MONTH(D3)+2,0),DATE(YEAR(D3),MONTH(D3)+1,P3)) これを最終行まで複写します。 これでこの列には、売上日の翌月の支払日が入ります。 最後に入金予定日のセル(E3)には =IF(D3<=Q3,Q3,R3) これを最終行まで複写します。
補足
回答ありがとうございます。 連絡が遅くなってしまったこと深くお詫びいたします。 早速教えていただいた通り試してみました。 Q列には、「40193」R列には「40224」という数字が入りますが、これでよいのでしょうか? 私には算出されたこの数字の意味が理解できないのですが・・??? ただ、確かにE列には、次月の支払い日が出てきます。
- minosennin
- ベストアンサー率71% (1366/1910)
例2はsheet名「例2」にあるものとして 例1のE3に =VLOOKUP(B3,例2!$A$2:$B$999,2,FALSE) と入力し下へ必要するドラッグ。 なお、式中の「999」はデータ件数により適宜変更してください。
補足
回答ありがとうございます。 連絡が遅くなってしまったこと深くお詫びいたします。 早速教えていただいた通り試してみました。 シンプルでわかりやすかったです。 ただ、E列に1900/1/15(参照:例2シートのB列15の場合)となります。 どうして1900になってしまうのでしょうか?
- sumer45
- ベストアンサー率17% (52/294)
vlookup
お礼
回答ありがとうございます。 連絡が遅くなってしまったこと深くお詫びいたします。 「VLOOKUP」関数を使用すれば良いようですね。 早速試してみます。
お礼
セルの書式設定を数値にして直りました。ありがとうございました。