- ベストアンサー
Excelの関数について教えてください。
いつもありがとうございます。 Excelの関数について質問します。 日付の入った表があります。 毎日データを入力します。 次に別のシートで毎月のデータを管理したいんです。 毎月1日のデータを毎月のデータのシートに移したいんです。 日付だけならDAY関数で取り出せるんですが・・・ ご指導の程、よろしくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#4,6です。 失礼しました。訂正です。 >もしSheet2のA2に日付、例えば2004/5/1を入力するのだとしたら、 >B2セルには、 >=SUMPRODUCT((MONTH(Sheet1!$A$2:$A$300)=MONTH(A2))* >(DAY(Sheet1!$A$2:$A$300)=1)*(Sheet1!B$2:B$300)) >でうまくいくんじゃないかと思います。 >うまくいったらH列まで右にコピー。 関数式の部分を、 B2セルには、 =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$300)=MONTH($A2))* (DAY(Sheet1!$A$2:$A$300)=1)*(Sheet1!B$2:B$300)) に訂正。(右にコピーする場合、絶対参照にしなければいけないため)
その他の回答 (6)
#4です。 >こちらの関数を入れてみましたが0になりました。 Sheet2のA2には何が入力されていますか?日付で入力していませんか?結果だけでなく、実際にどのように入力したかが、重要なんですが・・・ もしSheet2のA2に日付、例えば2004/5/1を入力するのだとしたら、 B2セルには、 =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$300)=MONTH(A2))* (DAY(Sheet1!$A$2:$A$300)=1)*(Sheet1!B$2:B$300)) でうまくいくんじゃないかと思います。 うまくいったらH列まで右にコピー。 A3セルには =DATE(YEAR(A2),MONTH(A2)+1,1) と入力して下にコピー。 注意として、データを抽出するのに年を考慮していないので、Sheet1に複数年度入力するなら、年の考慮が必要です。
- imogasi
- ベストアンサー率27% (4737/17069)
(例データ)Sheet1のA1:C11に、 (明確でなく多分に想像してます) (A列) (B列) (C列) (D列) 日付 項目1 項目2 ワーク列 2004/4/1 a x 1 2004/4/2 b y 2004/4/3 c z 2004/5/2 d u 2004/6/1 e v 2 2004/6/2 f s 2004/6/3 g t 2004/7/1 h w 3 2004/7/2 I q 2004/7/3 j e D列は初めはなにも入ってません。 (関数式) 使わない列を1列ワークに使う。例えばD列として、D2に =IF(DAY(A2)=1,COUNT($D$1:D1)+1, "") といれ、下に複写する。上記D列のようになる。 (関数式) Sheet2にいって A2に=OFFSET(Sheet1!$A$2,MATCH(ROW(A2)-1,Sheet1!$D$1:$D$20,0)-2,0) といれる。 B2に=OFFSET(Sheet1!$A$2,MATCH(ROW(B2)-1,Sheet1!$D$1:$D$20,0)-2,1) C2に=OFFSET(Sheet1!$A$2,MATCH(ROW(C2)-1,Sheet1!$D$1:$D$20,0)-2,2) を入れる。最後の引数だけが0->1->2と変っただけ。$D$20は適当に最下行予定を入れること。 A2;C2を範囲指定し、C2で+ハンドルを出して、下へ引っ張る。C4まで3件分引っ張る。 Sheet2で、前もって多数行に式を入れておくと#N/Aが出ますが、防止策はISERRORを使うことだが、式が長くなるので略。 (結果) 日付 項目1 項目2 2004/4/1 a x 2004/6/1 e v 2004/7/1 h w となります。 A列は、書式を日付にしておくこと。
もっと具体的にデータの入力のされ方、どのように結果を得たいのかを記入してもらわないと答えにくいです。 データは数値だけでしょうか?とりあえず数値だけと仮定します。 Sheet1のA2:A300に日付が入力されているとします。 Sheet1のB2:B300に数値が入力されているとします。 Sheet2のA2に対象の月、例えば5が入力されているとします。 Sheet2のB2にデータを抽出するとします。 B2: =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$300)=A2)* (DAY(Sheet1!$A$2:$A$300)=1)*(Sheet1!B$2:B$300))
お礼
回答、ありがとうございます。 説明不足ですみません。 下記、解答欄に補足を記入しました。 よろしければご覧頂ければ幸いです。 こちらの関数を入れてみましたが0になりました。
- 134
- ベストアンサー率27% (162/600)
HAL007さんの回答で不十分で、自動化したいということであれば、マクロを組むのが最適かと思います。 オートシェイプなどの図形にマクロを登録しておけば、その図形をクリックしただけで、データのコピーが可能かと思います。 ただし、具体的なシートの構成が不明ですので、具体的なVBAプログラムは、提示不能ですけど。
補足
回答ありがとうございます。 説明不足ですみません。 株価チャートを作っています。 Sheet1には毎日のデータ。 Sheet2には月ごとのデータを記入します。 A列 B列~H列 日付 値段(データ) が入っています。 Sheet1・Sheet2と共に同じデータです。 違いは、Sheet1は毎日のデータ。 Sheet2は毎月1日のデータのみ記入する、ということです。 この1日のデータを取り出したいのです。 文才がなく、伝わりにくいと思います。 すみませんが、よろしくお願いします。
- HAL007
- ベストアンサー率29% (1751/5869)
月データのシートの該当セルで=を入れて日データの シートをクリックして参照するセルをクリックすれば =日データ!A1 と言った具合の式が入ります。これでセルのリンクが終りです。
補足
回答ありがとうございます。 この方法は私も考えたんです。 ただ、全て自動で取り出したいんです。 わがままですみません。
- mayyasio
- ベストアンサー率43% (39/90)
毎日データシート1の1日セルと毎月データシート2の1日セルの関連を「名前BOX」で指定出来ませんか。
補足
回答ありがとうございます。 出来ましたら詳しく教えて頂けませんか? こちらの方法は自動で可能なんでしょうか?
お礼
ありがとうございます。 いまから仕事で出かけまして、夜中までPCは開かないので時間がないので明日また試します。 ご丁寧にありがとうございます。