質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

2955閲覧

VBAで入力した複数条件に一致する出データを別シートにある表に転記したい

ari818sa

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/03/31 08:44

VBAで入力した複数条件に一致する出データを別シートにある表に転記するマクロを組みたいです。
【row】に元データが入力してあり、【FMT】にある表の「出荷日」と「製品名」を入力してマクロ実行をすると、rowシートから条件一致する企業名、各製品への数量を自動入力するマクロを組みたいと思っているのですが、うまく組めません。
コードを教えて頂きたいです。
上がシートrow、下がシートFMTです。
説明下手で恐縮ですが、宜しくお願い致します。

イメージ説明

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

・【FMT】から、出荷日セルの値(Cells(1,2).Value)と製品名のセルの値(Cells(3,2).ValueとCells(3,3).Value)を取ってくる。
参考:https://www.tipsfound.com/vba/07001
・【row】で、Cells(i,2)が上で取ってきた出荷日の値と一致して、かつ、Cells(i,4)が上で取ってきた製品名の値と一致するようなiを探す(For文を使う)
参考:https://tonari-it.com/excel-vba-for-next/
・【row】から、見つかったi行目の企業名(Cells(i,1).Value)と数量(Cells(i, 5).Value)を取ってくる。
・【FMT】のそれぞれの製品名(JANコード)の下(Cells(6,2)やCells(6,3))に、上で取ってきた企業名や数量を書き込む。
参考:http://officetanaka.net/excel/vba/cell/cell01.htm

投稿2020/03/31 14:30

Matsui_hero

総合スコア346

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ari818sa

2020/04/02 05:51

下記コードを書いてみたのですが、FMTシートの企業名のところに企業ごとにまとめて転記にする方法がわからず、困っています…。また、より綺麗なコードがございましたら、合わせてご教示頂きたいです。 宜しくお願い致します。 Sub 出荷依頼FMTに入力() Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("出荷連絡row") Set ws2 = Worksheets("出荷連絡FMT") '出荷rowの最終行を取得し、最終行まで Dim lastrow As Long lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).row '出荷FMTの「企業名」行を取得する Dim Maxrow As Integer Maxrow = ws2.Range("B24").row '出荷FMTの出荷日と一致する日にちの企業を出荷rowから抽出、転記 Dim i As Integer For i = 2 To lastrow If ws2.Range("C20").Value = ws1.Range("C" & i).Value And _ ws2.Range("C22").Value = ws1.Range("B" & i).Value And _ ws2.Range("D22").Value = ws1.Range("B" & i).Value Then r = r + 1 ws2.Range("B" & Maxrow).Value = ws1.Range("A" & i).Value ws2.Range("C" & Maxrow).Value = ws1.Range("D" & i).Value ws2.Range("D" & Maxrow).Value = ws1.Range("D" & i).Value End If Next End Sub
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問