[[20080603170108]] 『その日のセルに数字を反映させたい』(COCO) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『その日のセルに数字を反映させたい』(COCO)

 質問内容を文章にすると難しいのですが・・・

 たとえば
 「A1」から行に6月の日付が入っています。
 B行にその日の数量が反映されます。
 反映させる数量の入力は「D1」です。

 つまり6/3に「D1」に100と入力をすると
 「B3」に自動的に100と入るようにしたいのですが・・・

 どなたかお願い致します


 >6/3に「D1」に100と入力・・・
 B3に=D1?
 (dack)

 携帯から見ていてようやく意味が分かりました 上の無しです^^;(dack)

 >>つまり6/3に「D1」に100と入力をすると
 のくだりの部分がいまいち解からないんですが
 6/3の日にD1に入力した場合にはA列の6/3のセルと同じ行の
 B列のセルに入力させたいということでしょうか?
 B1=IF(A1=TODAY(),$D$1,"")
 のような事?
 外してるっぽいですね^^
      (SS)

 さっき、同じようなもの作ったばかりです。。。^^

 シートモジュールにコピペしてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim TmpNo
    If Target.Address(0, 0) <> "D1" Then Exit Sub

    TmpNo = [MATCH(TODAY(),A:A,0)]

    If TypeName(TmpNo) = "Error" Then
        MsgBox "A列に本日の日付がありません"
    Else
         Application.EnableEvents = False
             Range("B" & TmpNo).Value = Range("D1").Value
         Application.EnableEvents = True
    End If

 End Sub

 (半平太)

ありがとうございます。

(SS)さんの方法で実行してみました。
本日D1に入力したら6/4のB行のセルに数字が
反映されました。
これは明日になってD1に数字を入力したら
6/5のB列のセルに反映され、同じ式を入れれば
ずっとその日の数字が自動で入るようになるのですか?
低レベルの質問ですみません。

(半平太)、エクセルマクロ初心者の自分には
シートモジュールにコピペの方法がわかりませんでした(泣)


 >エクセルマクロ初心者の自分にはシートモジュールにコピペの方法がわかりませんでした(泣)

 1) 目的のシートの『シート見出し』を右クリックして、画面中央の白いところにコードを貼り付けてください。
 2) Alt + F11 でエクセル画面に戻れば、お望みの状態になっています。

 (半平太)

半平太さんありがとうございました。

また、質問ですが。
同じようにF11に入力をしたらC5に数字が反映されるようにするには
同じマクロのセルNo?を変えればいいのでしょうか?
シート内に複数のマクロを組む仕方も教えてください(泣)


 どうしても日付を入力したくないんだ!!
 と言う事で有ればマクロを使うより仕様が無いと思いますが
 たとえば
 「今日の日付を探すのが面倒で・・・」
 と言う事で有れば
	[A]	[B]	[C]	[D]	[E]
[1]	日付	数		日付	数
[2]	6月1日			6月3日	100
[3]	6月2日			6月5日	200
[4]	6月3日	100			
[5]	6月4日				
[6]	6月5日	200			
[7]	6月6日				

 D:E列に情報を追加していき
 B2セルに
=IF(SUMIF(D:D,A2,E:E)=0,"",SUMIF(D:D,A2,E:E))
 の式をいれて、下にフィルドラッグ。

 E列の値が、該当のB列に表示されます。

 ご参考に。

 (HANA)

 >同じようにF11に入力をしたらC5に数字が反映されるようにするには
 私にはとても「同じよう」なこととは思えません。

 単純にC5のセルに「=F11」と数式を入力すればいいのではないですか?

 「C5」は「C列」の記入ミスですか?
  それは、「C列」で終わりの話ですか、それとも更に続きがあるのですか?
  続きがあるのでしたら、全貌が把握できるようにご説明ください。
  小出ししないようにお願いします。

 >シート内に複数のマクロを組む仕方も教えてください(泣) 
 漠然としたご質問で、どういう事をしたいのか良く分かりません。
 上の「C列の続き」につながって行くお話ですか?

 (半平太)

 >エクセルマクロ初心者の自分には・・・
 >シート内に複数のマクロを組む仕方も教えてください(泣) 
 組み方を教えてもらっても、ご自分でメンテ出来るのでしょうか?
 仕様が変更になった時はどうされますか?
 ここに来て「マクロ組んで!」とお願いですか?
 横着せずに打ち込んだ方がいいと思いますよ。
 例えば条件付書式とかで
 「数式が」「=A1=TODAY()」「書式でパターン設定」
 などで当日を判別しやすくするとかね。
  (通行人)

 質問の仕方もわからなくてすみません・・・

 今までのセルの位置などはリセットしてご覧ください。
 このようなものを作りたいのです。

	[A]	[B]	[C]	[D]	[E]     [F]
[4]	日付  製作数  不良数		  今日の製作数
[5]	6月1日	200	 50	         200  
[6]	6月2日	200	 50		
[7]	6月3日	200	 50			
[8]	6月4日	200	 50			
[9]	6月5日	200	 50	
[10]	6月6日                                   今日の不良数
[11]     6月7日                    50
[12]   6月8日			         

 F5に200と入力するとB9に入る。
 F11に50と入力するとC9に入る。
 これが明日6月6日にF5に数を入力するとB10に入る。
 F11に数を入力するとC10に入る。
 というように、その日その日の数量を入れて
 1ヶ月分残していきたいのです。

 確かにマクロを教えていただいても自分でメンテは
 出来ないでしょう。それは重々承知の上でお伺いしています。
 よろしくお願いいたします。


 ここのようなサイトでは、勉強しようという姿勢が
 見えない方には冷たいです。
 業者にお金を払って依頼してはいかがでしょう?

 ご自分でメンテナンスができないのであれば、少し
 仕様が変わっただけで再度聞きに来ることになりかねません。
 他のサイトで聞いたとしても、どこでそのコードを拾ってきたんだ?
 作った本人に聞いてくれ、ということにもなりかねません。

 自分でやり遂げようという姿勢が見える方にはどんどんアドバイス
 が付くでしょう。
 (とおりすがり)

 補足、補足。

 ですから、COCOさんは マクロがご希望なのでしょうから
 >自分でメンテは出来ないでしょう。
 ではなく、ご自身でメンテが出来るように成るために
 まず(半平太)さんのコードを眺めてみましょう。
  なぜ、D1セルに入れたときにだけ有効なのか?
  どうやって、今日の日付の行をA:Aの範囲から探しているのか?
  なぜ、セルに入れた物は、B列に転記されるのか?

 眺めてみましたか?
 コードは意味の有るものです。
 意味を分かろうと努力をしてみましたか?

 まずは最初のコードに関して、コードの1行1行が何をやるのか
 分かるところだけでも、考えてみられてはどうでしょう?
 「こう考えたが、合っているか?」
 と言うご質問には、すぐにレスがつくと思いますし
 そうすることが、最終的にCOCOさんが希望するコードへと
 つながることと思います。

 また、
 「ココとココは、この様に考えられると思い分かったが
  ココが分からない」
 と言う質問でも宜しいかと思います。

 (HANA)


 1.回答者にも色々なタイプがあるかと思います。

 こう云う掲示板では、「とおりすがりさん」や「HANAさん」のような考え方が
 主流なので言い出しにくいですが、私のスタンス。
                   ↓
  面白い暇つぶしをしたい(一言で云うなら、これが全てです)

   自分のスキルアップにつながりそうなら、自分が分からない事でもトライしたい
   困っている人は助けたい
   質問者に、姿勢や知識について、多くを期待しない(レベルを引き上げてあげようとも思わない)
   質問がうまく書けていないものは、初めからスルーする。
   条件を後出しする案件は、放り投げる。(でも、困り度合いが高ければ、続ける)

 2.問題はこれでいいですね。
       ↓
  F5 セルをB列の該当行へ転記
  F11セルをC列の該当行へ転記
  xNNセルをy列の該当行へ転記

  Private Sub Worksheet_Change(ByVal Target As Range)  'Changeイベントで作動するマクロ
  Dim outputRow As Long
  Dim outputCol As Long
  Dim outputColsAry
  Dim inputCellsAry
  Dim inputCell As Range

     If Target.Count > 1 Then Exit Sub

     Set inputCell = Intersect(Target, Range("F5,F11")) '追加があれば増やす。例:Range("F5,F11,X20")
     If inputCell Is Nothing Then Exit Sub              '処理セルか判断

     inputCellsAry = Array("F5", "F11")                 '追加があれば増やす。例: Array("F5", "F11","X20")
     outputColsAry = Array("B", "C")                    '追加があれば増やす。例: Array("B","C","Y")

     outputCol = WorksheetFunction.Match(inputCell.Address(0, 0), inputCellsAry, 0) - 1

     outputRow = [MATCH(TODAY(),A:A,0)]

     If TypeName(outputRow) = "Error" Then
         MsgBox "A列に本日の日付がありません"
     Else
          Application.EnableEvents = False               '次の行でセルが書き変わっても、このChangeイベントが呼び出されない様にする。
              Range(outputColsAry(outputCol) & outputRow).Value = inputCell.Value
          Application.EnableEvents = True
     End If

  End Sub

  (半平太)

 cocoさんはもともと「誰かマクロつくってー」と質問したわけじゃ
 ないじゃないですか。
 SSさんの回答をいただいた後だって自分で実際にやってみて質問してるし。
 なんでここまで責められるのか、わかりません。

 いつもここにいる方には「またかよ」って事でも質問するほうからしたら
 初めての質問でいきなりこんな言われ方されたら驚きますよ。

 まず今回教わり、今の仕事の山を越えた時に、あの時教わった事、勉強してみようかと
 思うかもしれない。思わないかもしれない。それでいいじゃないですか?

 常駐さんの言われることは正論ですが、言い方しだいではイヤミですよ。

 (のり33)


 >常駐さん
    の定義とは?(dack)

 のり33さん。

 >確かにマクロを教えていただいても自分でメンテは
 >出来ないでしょう。それは重々承知の上でお伺いしています。
 この発言は
 >「誰かマクロつくってー」
 と聞こえませんか?私には聞こえます。

 私は、COCOさんが「コードは分からない!!」と
 最初から目を瞑って居られるように感じました。
 ですから「読んでみたら?」と言う書き込みをしました。

 >シートモジュールにコピペの方法がわかりませんでした
 と書いて居られるので、どの程度マクロに初心者なのかは分かります。
 でも、今回のコードで有れば そしてご希望を叶えるだけで有れば
 関数と同じように読んでみれば 読める物だと思いますし
 得る物は有ると思っています。

 せっかく素敵なコードが有るのに、そしてそれを使おうと思っているのに
 目を瞑って仕舞うのは、勿体ないと思っての書き込みです。

 それがイヤミに聞こえるのなら・・・・まぁ、仕様がないのかもしれませんが。

 (HANA)

大変遅くなりましたが、ご報告です。
半平太さん、その節はありがとうございました。
その後、半平太さんのマクロを元にした表で関数を追加したりして
使わせていただいています。
書き込みのルールを知らなくて完了報告してませんでした。

また、のり33さんもフォーロー的ご意見ありがとうございました。
おっしゃるとおりに今、上記のマクロの解読に励んでいます。

HANAさん、自分は本当にレベル低いです。
24時間いつでも勉強ができればいいのですが・・
でも、1つづつ勉強していますのでお力を貸してください!


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.