[[20210927201102]] 『別シートの数値を日付が変わるごとに自動更新した』(てっちゃん) ページの最後に飛ぶ

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

 

『別シートの数値を日付が変わるごとに自動更新したい』(てっちゃん)

初めまして。
こんばんは、すみません、Excelの初心者なのですが、
数式もしくはVBAになるかと思いますが、教えていただけますと
幸いです。

AシートとBシートがあり

BシートのA1に日付、A2に個数、B3に売上が入っているとします。
このシートは毎日更新し、入力する場所は固定になっているのですが、

Aシートの日付ごとにBシートの数値を自動更新したいと考えております。
(Bシートに日付、個数、売上が入れば自動で、Aシートに
更新される)

この場合、どのような数式を使うべきでしょうか?

ちなみに、Aシートは

A1に日付B1に次の日の日付・・・という感じで、
列ごとに日付がすでに入っており、
Bシートの日付が変われば列が右に更新していく感じです。

わかりにくくてすみません・・・

例)BシートのA1 2021/9/18

             A2  46,986
             A3  \36,049,187

    AシートのA1 2021/9/18←ここにはすでに日付が列ごとに入力されています。 
      A2 BシートのA2の数字が自動で入る
      A3 BシートのA3の数字が自動で入る

まったくのエクセルは素人なためよろしくお願い致します。
また、わかりずらくてすみません。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 Bシートは1行目しか入力しないという理解で正しいですか?
 入力ごとにB1の日付が書き換わりAシートに移動したいということなら
 マクロになります。
 そうではなく、Bシートも1行ごとに追記していくのだ、ということなら
 vlookupで対処可能と思います。
(*) 2021/09/28(火) 09:29

ありがとうございます。bシートは、一行目のみの入力となります。
入力ごとにB1の日付が書き換わりAシートに移動したいと思っております。

よろしければマクロのやり方を教えていただけますと助かります。
(てっちゃん) 2021/09/28(火) 10:01


 マクロのやり方、というのがVBAの使い方からだという認識で一旦書きます。
https://www.excelspeedup.com/vbapuroguramusaisyo/
 上記URLを参考にまずはVBAを使用できる状態にしてください。

 その上で質問ですが、日付を入力した瞬間に自動で転記したいのですか?
 この場合、BシートのA2,A3は先に入力してA1の日付は最後に入力という形にしないといけなくなります。
 それでもよろしければ、以下の記事の「ちょっと応用」以下にほとんど答えが載っています。
https://daitaideit.com/vba-sheet-event-change/
 ただし、うっかりA2,A3の更新を忘れていても転記されてしまうので注意してください。
(*) 2021/09/28(火) 10:39

ありがとうございます。
日付を入力した瞬間で大丈夫です。
確認致します。
とても助かりました。
(てっちゃん) 2021/09/28(火) 10:47

 私は、イベントプロシージャは避けた方がよいと思います。
 ご指摘のように、項目ごとの入力の順序によりますし、
 色々な副作用に神経を使う必要があります。
 (例えば、取消や修正等ですね。)
 イベントプロシージャは経験がある程度必要です。

 私のお薦めは、シートを分けずに直接書き込むことですが、
 どうしても、ということであれば、
  ・マクロをボタンに登録したうえで、
  ・必要な時に、ボタンを意識して押す
 ことで転記するのが確実だと思います。

    <<Sheet1>>  
     A列         B      C
 1   日付      個数   売上 
 2   2021/9/28   10   50000 

    <<Sheet2>>  
     A列         B      C
 1   日付      個数   売上 
 2   2021/9/25    1    3000 
 3   2021/9/26    1    5000 
 4   2021/9/27    2   30000 
 5   2021/9/28   10   50000 ←ここに転記したい
 6   2021/9/29    

 Sub test()
     Dim ws1 As Worksheet
     Dim ws2 As Worksheet
     Dim r

     Set ws1 = Worksheets("Sheet1")
     Set ws2 = Worksheets("Sheet2")
     r = Application.Match(ws1.Range("A2"), ws2.Columns(1), 0)
     If Not IsError(r) Then
         ws2.Cells(r, 2) = ws1.Range("B2")
         ws2.Cells(r, 3) = ws1.Range("C2")
     Else
         MsgBox "日付がみつかりません"
     End If
 End Sub
 書き込もうとするところが既に記入済であれば、
 警告を出すとかも必要かもしれません。(日付を間違っていたとか)
 いったん入力したものを消してしまうと再現できませんから。   
(γ) 2021/09/28(火) 10:58

ありがとうございます!ちょっと挑戦してみます。
本当に助かりました。ありがとうございます。
(てっちゃん) 2021/09/28(火) 18:18

こんにちは。
何度も大変申し訳ございません。
昨日はありがとうございました。
昨日いただいた、下記の分ですが、

 <<Sheet1>>  
     A列         B      C
 1   日付      個数   売上 
 2   2021/9/28   10   50000 
    <<Sheet2>>  
     A列         B      C
 1   日付      個数   売上 
 2   2021/9/25    1    3000 
 3   2021/9/26    1    5000 
 4   2021/9/27    2   30000 
 5   2021/9/28   10   50000 ←ここに転記したい
 6   2021/9/29    
 Sub test()
     Dim ws1 As Worksheet
     Dim ws2 As Worksheet
     Dim r
     Set ws1 = Worksheets("Sheet1")
     Set ws2 = Worksheets("Sheet2")
     r = Application.Match(ws1.Range("A2"), ws2.Columns(1), 0)
     If Not IsError(r) Then
         ws2.Cells(r, 2) = ws1.Range("B2")
         ws2.Cells(r, 3) = ws1.Range("C2")
     Else
         MsgBox "日付がみつかりません"
     End If
 End Sub

こちらを、下記のようにするにはどのようにすればよろしいでしょうか?

<<Sheet1>>

     A列         B     
 1   日付     2021/9/28  
 2   個数    10
 3   売上      50000 

    <<Sheet2>>

           ↓ここに転記したい

             A列            B          
 1   日付  2021/9/27   2021/9/28        
 2   個数     5            10         
 3  売上    25000    5000

何度も大変申し訳ございません。
よろしくお願い致します。
(てっちゃん) 2021/09/29(水) 13:17


 こうですか?
 Sub test()
     Dim ws1 As Worksheet
     Dim ws2 As Worksheet
     Dim c

     Set ws1 = Worksheets("Sheet1")
     Set ws2 = Worksheets("Sheet2")
     c = Application.Match(ws1.Range("B1"), ws2.Rows(1), 0)
     If Not IsError(c) Then
         ws2.Cells(2, c) = ws1.Range("B2")
         ws2.Cells(3, c) = ws1.Range("B3")
     Else
         MsgBox "日付がみつかりません"
     End If
 End Sub
 (正直申し上げると、これくらいはご自分でトライしてもらいたいですね)

 参考までに申し上げると、私の提示したようなフォーマットのほうが
 一般的ではないですかね。

 データベース関連でも、
 ・項目は各列に配置して、
 ・ひつひとつのデータは行にして、
   行が増える方向にデータを追加していく
 というのが一般的でしょう。

(γ) 2021/09/29(水) 13:47


すみません。ありがとうございました。
助かりました!ご迷惑をおかけいたしました。
(てっちゃん) 2021/09/29(水) 14:11

コメント返信:

[ 一覧(最新更新順) ]


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