dポイントプレゼントキャンペーン実施中!

作業シートのSheet2には「伝票No、名前、金額等」が入ります。記録シートのSheet1には「伝票No、名前、金額等」を記録します。

Sheet1の伝票N0に対応した行のセルに金額を自動記録したいのですが、どうしたら良いか解りません。

Sheet1は
D列に 伝票NoをD7から1、2、3、4、5・・と連番をつけておく。
G列に 名前
H列に 金額をH7、H8、H9、H10・・・・・・・に一行ごとに入れる。
(なお、H列はH~Oを結合してます。)
Sheet2には
R8(S8とセル結合)に Sheet1から取った伝票Noをその都度、入力していく。(作業シートのためその都度上書きする。)
R24(S24とセル結合)は 金額を表示

このR24の金額を伝票NoごとにSheet1に記録したい。作業シート=入力シートなので前記がなくなるので連続作業ができません。この部分だけのマクロでもかまいません。どなたか教えてください。

質問者からの補足コメント

  • 早速のご回答ありがとうございます。
    ご質問ですが、①直接入力ですが、Sheet2の金額を確認してその都度Sheet1に戻って入力しなければなりません。②列の結合は単にシートの形式にこだわっただけです。1セルでも不都合はないです。③作業シートには他に品目、数量、単位等の項目があり別シートから転記しています。また、このシートは伝票の形式でそのまま伝票に転記され印刷します。なお、新たな伝票は作業シートに上書きして作成します。
    その記録をSheet1記録したいのですが、どうしても行別(伝票No)ごとに金額を転記する方法ができません。よろしくお願いします。

      補足日時:2017/09/26 17:49
  • 遅くにすみません。
    ①転記する前提条件は合っています。
    ②Sheet2の名前のセル位置はE12です。
     なお、Sheet2のR24は→S24の間違いです。すみません。
    ③伝票番号が存在しなかった場合→エラー表示でお願いします。
    ④Sheet2は作業シートにしたいので、そのまま残して次の伝票番号で上書きします。
      
    説明不足でご迷惑をおかけします。

      補足日時:2017/09/26 22:14
  • 早速有り難うございました。試行錯誤しながら標準モジュールに書き込みました。Sheet1に金額が表示されません。セル位置は間違いないのですが・・。関係ないと思い説明していませんでしたが、Sheet1の伝票番号をD2(固定セル)にその都度入力することでSheet2のR8にコピー(=D2)するようにしています。入力したコードは入力ミスがないよう3回チェックしましたの間違いないと思います。
    何度もすみません。よろしくお願いします。

      補足日時:2017/09/27 19:32
  • 基本的なことが解らず申し訳ないのですが、メッセージボックスはどこで見るのですか、今でも見れますか。何度か途中で修正のメッセージが出ましたが、”転記完了”のメッセージは解りませんでした。モジュールのプロジャーは「転記」の標記はあります。
    Sheet2には伝票番号、名前、金額を入力していますが、Sheet1の行に金額、名前が表示されていません。S24は=R24*Q24の金額が表示されています。
    よろしくお願いします。

      補足日時:2017/09/28 09:20
  • 遅くにすみません。何度か試みましたが画像の添付ができませんでした。それで添付画像と全く同じものをsheet1,sheet2に配置し、教えて頂いたとおりの手順で一から作成し直しました。シート作成(Sheet2には金額等入力済み)→開発→マクロの記録→VisualBasic→VBAProjectの標準モジュール(Module1)→OptionExplicitにコードを書き込む→(メッセージボックスの転記完了は表示されませんでした。) この過程の中で、こちらの操作又はコードの書き込み場所が間違っているのではないでしょうか。よろしくお願いします。

      補足日時:2017/09/28 21:14

A 回答 (8件)

画像の添付の方法ですが、


windowsのアクセサリにSnipping Toolがあります。
それを使うと、画面のキャプチャができます。
一旦、その画像をファイルに保存します。その後、そのファイルをアップロードします。
添付した画像は、全て、このツールでキャプチャしたものです。
    • good
    • 0
この回答へのお礼

大変有り難う御座いました。N07のご回答でご教授頂きました手順で実行しましたところ、転記が完了しました。お忙しい中、初めての者に最後までご指導いただき感謝申し上げます。本当に有り難う御座いました。なお、画像の添付方法も大変助かります。

お礼日時:2017/09/29 17:39

マクロの書き込み場所はあってます。


コードを標準モジュール(Module1)に書き込んだだけでは、マクロは実行されません。
添付図のように”表示”タブを選択し、「マクロ」をクリックしてください。
すると、実行画面が表示されますので、”転記”を選択し、実行ボタンをクリックしてください。
(図はexcel2007ですが、たぶん、ほかも同じかと思います)
「Sheet2のセルの数値をSheet1の」の回答画像7
    • good
    • 0
この回答へのお礼

解決しました

大変有り難う御座いました。このご教授で完成致しました。最後まで有り難う御座いました。

お礼日時:2017/09/29 17:47

なにかセルの位置で、こちらの環境とあなたの環境で齟齬が起こっているかもしれません。


こちらの環境の画像です。
Sheet2のR8(伝票番号)、E12(名前)、S24(金額)が
Sheet1の16行に転記されています。
あなたの環境をわたしのように画像で提示していただければ、齟齬の原因がわかるかと思います。
「Sheet2のセルの数値をSheet1の」の回答画像6
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/11/14 17:49

>メッセージボックスはどこで見るのですか、今でも見れますか。


マクロが成功すると、添付の画像のメッセージボックス(赤線で囲んだもの)が、表示されるはずです。
これが、表示されませんでしたか。
「Sheet2のセルの数値をSheet1の」の回答画像5
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/11/14 17:49

>Sheet1に金額が表示されません。



”転記完了”がメッセージボックスに表示され、名前は、設定されるのですね。(金額だけが設定されないということでしょうか)

金額は、Sheet2のS24をSheet1の伝票番号に一致する行のH列へ設定しています。
S24が空白になっていませんでしょうか。
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/11/14 17:50

以下のマクロを標準モジュールに登録してください。


---------------------------------------------
Option Explicit
Public Sub 転記()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow As Long
Dim row As Long
Dim dicT As Object
Dim key As Variant
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
Set dicT = CreateObject("Scripting.Dictionary")
maxrow = sh1.Cells(Rows.Count, "D").End(xlUp).row
'伝票番号を記憶
For row = 7 To maxrow
key = sh1.Cells(row, "D").Value
dicT(key) = row
Next
key = sh2.Cells(8, "R").Value
If dicT.exists(key) = False Then
MsgBox ("伝票番号=" & key & "はSheet1にありません")
Exit Sub
End If
If sh2.Cells(12, "E").Value = "" Then
MsgBox ("名前が未入力です")
Exit Sub
End If
If sh2.Cells(24, "S").Value = "" Then
MsgBox ("金額が未入力です")
Exit Sub
End If
row = dicT(key)
sh1.Cells(row, "G").Value = sh2.Cells(12, "E").Value '名前
sh1.Cells(row, "H").Value = sh2.Cells(24, "S").Value '金額
MsgBox ("転記完了")
End Sub
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/09/29 17:48

補足要求です。


Sheet2の伝票番号でSheet1の伝票番号を検索し、一致する行にSheet2の名前、金額を転記する
という前提であってますか。
その前提で、以下の質問です。

1)Sheet2の名前のセル位置が不明です。提示してください。
Sheet2のR8=伝票番号
Sheet2のR24=金額
は、わかっています。

2)Sheet2に入力された伝票番号が、Sheet1に存在しなかった場合は、どうしますか?

3)Sheet2の金額、名前をSheet1へ転記したあと、Sheet2のこれらの情報(伝票番号、金額、名前)は、そのまま残しておきますか。
それとも、クリアしたほうがよいですか。
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/11/14 17:50

やっていることの意味が全然わかりません。

Sheet1に直接入れるのではダメなんですか?
なぜ、作業用シートが必要なんですか?

なぜ、列を結合しているんですか?
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2017/11/14 17:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!