• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【できれば至急で】エクセル関数の式で教えてください)

エクセル関数の式で入金日が反映される問題

このQ&Aのポイント
  • エクセル関数を使って入金日が自動的に別のシートに反映されるような式を作成したいです。
  • 2010年までは正常に機能していましたが、2011年以降に入金日を入力すると正しく反映されません。
  • シート1の入金日が「例:2011/1/4」と入力された場合、シート2の表が完成する式を教えてください。

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

  • ベストアンサー
回答No.1

空欄に対してMONTH()関数で値を取得すると1が返ってくるようです その為に1月の1とマッチングしてしまい、集計対象と判定されています 2010年の1月にも同じ事象が起きているはずですが、 起きていなければ何らかの回避策が書き加えられていると思われます 対策としては、H2の関数に「G2(入金日)が空ではない場合」の条件を追加すれば良いはずです 具体的な関数変更は以下の通り =IF(AND(F2<>"",MONTH(G2)=シート2!$A$1),G2+ROW()/1000,"")  ↓ =IF(AND(F2<>"",G2<>"",MONTH(G2)=シート2!$A$1),G2+ROW()/1000,"")

naoyimomo
質問者

お礼

この度は、ありがとうございました。前の方も詳しく回答を書いてくださっていたのですが、ド素人の私には、こちらの方のが理解しやすかったです。助かりました。

その他の回答 (1)

回答No.2

突っ込みどころ満載というか、やっつけ仕事というか、、、 質問に対する解決方法 MONTH関数を使うときは注意が必要ですね。 空白セルは0と判断され、シリアル値0は1900年1月0日となります。 =IF(AND(F2<>"",G2<>"",MONTH(G2)=シート2!$A$1),G2+ROW()/1000,"") >シート2!$A$1 シート2!$B$1 の間違いでは? >G2+ROW()/1000 1000行目~1999行目まで +1日 2000行目~2999行目まで +2日 1か月間ではそこまで行を使わないかな? ちなみにSMALL関数は行数が増えるほど計算が遅くなります。 自分が他人に分かるように作るとしたら Sheet1!H1セルに 0 Sheet1!H2セルに =IF(COUNT(F2:G2)<>2,H1,IF(MONTH(G2)=(シート2!$B$1),SUM(H1,1),H1)) シート2!E3セル =MATCH(A3,Sheet1!H:H,0) シート2!B3セル =IF($B$1="","",IF(ISNA($E3),"",INDEX(Sheet1!G:G,$E3))) シート2!C3セル =IF($B$1="","",IF(ISNA($E3),"",INDEX(Sheet1!D:D,$E3))) シート2!D3セル =IF($B$1="","",IF(ISNA($E3),"",INDEX(Sheet1!F:F,$E3)))

naoyimomo
質問者

お礼

この度は、ご丁寧に回答をいただき誠にありがとうございます。エクセルも関数もド素人の為、実は、この式自体も、以前、ネットで質問をして教えていただいたものをそのまま使用しておりました。正直、教えていただいた内容をコピーしただけで、実際には、関数式の意味をよく理解できておりませんでした。ここまで詳しく書いていただけると本当に助かります。ただ、式の意味がちゃんと理解できていないので、コピーするだけではなく、理解したいと思います。お手数をおかけいたしました。

関連するQ&A