電子書籍の厳選無料作品が豊富!

Sheet1を在庫管理表、Sheet2を注文書として自動的に注文書を作成したいです。

Sheet1に在庫管理表を作成して、E列の”注文ボタン”を押すと自動的にSheet2の4行目から順に名前と注文数が反映される方法を教えてください。
宜しくお願いします。

「Excelの別シートへの反映方法を教えて」の質問画像

A 回答 (4件)

こんにちは


ボタンを押すと、、であればVBAマクロを使う必要があります。
既に回答があるように私も#1様の回答を支持いたします。

マクロを使用した事が無いのであれば、#1様提案の通り、デモ作業をマクロ記録しボタンに登録しましょう。その上で空き行を作らない方法などを調べるのが良いと思います。

表題のキーで検索されこのスレッドを参考にされる方もいらっしゃるかもしれませんので、サンプルコードを書きます。
VBAの基礎知識が必要である事と処理の内容を理解する事も必要です。

Sub 注文反映()
Dim shp As Shape
Dim shpName As String
Dim n As Long, r As Long
Dim TrgSh As Worksheet
Set TrgSh = Worksheets("Sheet2")
shpName = Application.Caller
With ActiveSheet
Set shp = .Shapes(shpName)
r = shp.TopLeftCell.Row
n = TrgSh.Cells(Rows.Count, "B").End(xlUp).Row + 1
TrgSh.Cells(n, "B").Value = .Cells(r, "B").Value
TrgSh.Cells(n, "C").Value = .Cells(r, "D").Value
End With
End Sub

簡単な説明
各ボタンに同じマクロ 注文反映 を登録して使います。
シートに作成したシェイプ以外から実行するとエラーになります。
シェイプの押された行順に上に詰めて出力されます。

ActiveSheetとは押されたシェープの設置されたシートです。
Set TrgSh = Worksheets("Sheet2")は出力先のシートです。
shpName = Application.Callerは、押されたシェイプの名前です。(特定する為)
Set shp = .Shapes(shpName)は、押されたシェイプの特定
r = shp.TopLeftCell.Rowは、押されたシェイプの設置されている行№取得
n = TrgSh.Cells(Rows.Count, "B").End(xlUp).Row + 1は、
出力するシートB列の使われている行№+1(新規行№)を取得
これらを使い対象セルを特定して参照(代入)式で値を取得しています。

変更などを行う場合
出力シートを変える場合 "Sheet2" を出力したいシート名に変更
出力列を変える場合 左辺の"B"などを変更
参照列を変える場合は右辺の"B"など
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。大変参考になります。

お礼日時:2021/11/02 21:24

別解、です。



Sheet1 の範囲 B2:D7 を選択⇒Alt+MC⇒“上端行”のみにチェック残し
⇒[OK]⇒式
=IFERROR(INDEX(注文数,MATCH(B4,名前,0)),"")
を入力した Sheet2 のセル C4 を下方にズズーッとオートフィル
オ・シ・マ・イ
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。大変参考になります。

お礼日時:2021/11/02 21:24

Sheet1 の範囲 B2:E7 に例えば 在管表 という名前を付けておけば、式


=VLOOKUP(B4,在管表,3,FALSE)
を入力した Sheet2 のセル C4 を下方にズズーッとオートフィル
オ・シ・マ・イ
    • good
    • 0

マクロを使う事になります。



質問者さんはマクロを作れますか?
ここは「代わりにマクロを作ってください」と作業依頼をする場所ではありません。
自力で問題を解決するためにマクロを作るアドバイスを受ける場所と思ってください。

そんなわけで、まずは質問者さんがどの程度マクロを扱えるのかを教えてください。
きっとそれを見た人から適切なアドバイスをもらえると思います。

・・・

「マクロの記録」でマクロを作れるなら、
範囲を指定してコピペする手順を記録しましょう。
そうして作られたマクロをボタンに割り当てれば良い。

質問のケースならマクロを4つ作り、それぞれボタンに割り当てれば良いことになります。

正直、一から作るよりもこの方が確実に動作するマクロを短時間に作れます。

……マクロ(VBA)に詳しい人からは、冗長なことをしていると思われるかもしれませんが、
希望する結果を容易に得られるのです。気にしちゃダメ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。大変参考になります。

お礼日時:2021/11/02 21:24

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