- ベストアンサー
Excel関数について
「ある固定のセル」に入力されているものを「別のシートに日付ごと」に自動反映されるようにしたいのですが、どうすればよろしいでしょうか。ご教授の程お願い致します。 毎日「A1」に入力する 1日→「B2」に自動反映 2日→「B3」に自動反映 3日→「B4」に自動反映 ・ ・ ・ といった感じでございます。 色々調べてみたんですがどうにもこうにも分かりませんでした。 宜しくお願い致します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#1,#3さんが言われるとおり、Excelの関数というのは、 「今現在入ってる数値で常時内容を洗い変えてしまう」 性格を持っています。 ですので、関数を使う以上、「昨日入力した数値は、どう やっても今日入力すると消えてしまう」んです。これは Excelの「仕様」で決まってることですから、どうすることも 出来ません。関数を使う以上、回避するには「入力する 場所を毎日変える」しかないのです。 どうしても 1.入力する場所は絶対に変えたくない 2.反映する場所は絶対に毎日変えたい ならば、VBAという「プログラム」を書かないといけません。 VBAを使うと、こういうことはできるんですが、かなり大変な 勉強が必要です。 頑張ってみるなら、この辺を。ただ、「毎日の日付で反映する 場所を変える」ためには、Offsetという発想を理解する必要が あり、結構上級なプログラムになります。 http://exvba.officehp.com/
その他の回答 (7)
- keithin
- ベストアンサー率66% (5278/7941)
ご利用のエクセルのバージョンが不明ですが,エクセルのオプションの数式(あるいは計算方法)で「反復計算」のチェックを入れておきます(必ず行う)。 B2に =IF(ROW(B1)=DAY(TODAY()),$A$1,B2) と記入し,下向けにコピー貼り付けておきます。 #勝手に手順を省略したり間違えると,出来ません。
- KURUMITO
- ベストアンサー率42% (1835/4283)
毎日A1セルのデータが入力されたものを日付に応じてB列に表示させるというのでしたら関数で対応することはできません。次のようなマクロで行うことになるでしょう。 該当するシートのシート見出しで右クリックし「コードの表示」で表示される画面に次のコードを入力します。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim i As Integer On Error Resume Next If Target = Range("A1") Then i = Day(Date) + 1 Cells(i, 2) = Target.Value End If End Sub
- aokii
- ベストアンサー率23% (5210/22062)
Sheet1のA1セルに毎日入力するものとして、 Sheet2のA2セルから下に1,2,3...と入力し、 Sheet2のB2セルに、以下の式を入れて、下にドラッグコピーしてみてください。 =IF(DAY(TODAY())=$A2,Sheet1!$A$1,"")
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 仮にSheet1のA1を固定セルとすると、別シートのB2に=IF(DAY(TODAY())=ROW(A1),Sheet1!$A$1,"")を入力、下方向にオートフィル
- chonami
- ベストアンサー率43% (448/1036)
>昨日入力したB2に表示されている値をそのまま残して……と、いう事でしたらVBAでやることになります。 なるほど。 そう言われるとそうですね。売上入力みたいな感じがしてきました。
- chonami
- ベストアンサー率43% (448/1036)
B2に =IF(DAY(TODAY())=ROW()-1,$A$1,"") 下に必要分コピー で如何でしょうか?
- mt2008
- ベストアンサー率52% (885/1701)
今日(4/2)に入力した値がB3に表示され、それ以外のB2:B32のセルが空白になる……と、言うのでしたら関数でもできます。 しかし、昨日入力したB2に表示されている値をそのまま残して……と、いう事でしたらVBAでやることになります。 どちらでしょう。
お礼
VBA頑張ってみます。 ご丁寧なご回答ありがとうございました!