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

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

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

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

Q&A

解決済

1回答

2163閲覧

別のシートに転記(同時に2列ずつ3列ずつ転記)

sakura12

総合スコア3

VBA

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

0グッド

0クリップ

投稿2021/10/06 04:05

編集2021/10/06 05:10

【転記元】シート1

          A    B    C 
1 日付     10/1 10/2 10/3←こちらの日付を3日ごとに更新していきます。
3日分終われば、B2に10/4,B3に10/5,B4に10/6という形で更新します。                    

2 個数     10 50 30←こちらの数字もその日の数値に変更していきます。

3 金額 1000 5000 3000←こちらの数字もその日の数値に変更していきます。

4 本日の返品数 0 5 1←こちらの数字もその日の数値に変更していきます。

【転記先】シート2

          A    B    C    D E
1日付      10/1 10/2 10/3  10/4  10/5・・・・・←数値がすべての分入力してあります。

2売り上げ目標

3個数 10 50 30

4金額 1000 5000 3000

5達成率

6本日の返品数  0 5 1

転記元シートの日付から
個数、金額、本日の返品数を転記先に移したいのですが、

①転記先の行がそのまま転記ではなく、転記先の日付の次は別の数式が記載があり、
次の行から2個の項目を転記。という感じで、飛び飛びで転記する場合
どのようにVBAを組んだほうがよろしいでしょうか?

②また、こちらは、2日分ずつ、3日分ずつ転記したいと考えて
おります。

以前、こちらを教えていただいてて、こちらを活用しようと思って、作っておりましたが、なかなか
うまくいきませんでした。

Sub 登録()
Dim ThisSh As Worksheet
Dim ThisCh As Worksheet
Dim Col As Long
Dim Rws As Long

Set ThisSh = ThisWorkbook.Sheets("Sheet1") Set ThisCh = ThisWorkbook.Sheets("Sheet2") Col = ThisCh.Range("1:1").Find(What:=ThisSh.Range("B1").Value).Column Rws = ThisCh.Range("A:A").Find(What:=ThisCh.Range("A2").Value).Row ThisCh.Cells(Rws, Col).Value = ThisSh.Range("B2").Value Rws = ThisCh.Range("A:A").Find(What:=ThisCh.Range("A3:A4").Value).Row ThisCh.Cells(Rws, Col).Value = ThisSh.Range("B2:B3").Value Rws = ThisCh.Range("A:A").Find(What:=ThisCh.Range("A4").Value).Row ThisCh.Cells(Rws, Col).Value = ThisSh.Range("B6").Value Set ThisSh = Nothing Set ThisCh = Nothing

End Sub

こちらのRws~先の3つ分を3回繰り返して書き込めば
3列続けて転記できるということでよろしいでしょうか?

失礼いたしました。転記前のシートをおつけします。

転記前のシート

          A    B    C ・・・・
1日付      10/1 10/2 10/3

2売り上げ目標

3個数

4金額

5達成率

6本日の返品数  

こちらの、日付は事前に入っておりまして、それ以外の転記元のデータを転記先に転記したいと考えております。
日付の並びは同じようになっております。

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

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

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

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

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

hatena19

2021/10/06 04:21

【転記先】シート2 ですが、これは転記後の図ですよね。 転記前はどうなっているのですか。それも図示してもらえますか。 A列の項目名と、1行目の日付は入力済みで、それ以外の数値データを転記したいということでしょうか。 日付は入力済みの場合、転記元と転記先の日付の並びは同じですか。それとも異なりますか。
sakura12

2021/10/06 04:32

こんにちは。すみません・・・ 複雑な内容でもうしわけございません。 1行目のみ転記先は入力済でございます。 日付は、転記元と転記先は同じ並びとなっております。 よろしくお願い致します。
hatena19

2021/10/06 05:30 編集

> ②また、こちらは、2日分ずつ、3日分ずつ転記したいと考えております。 これについて、もう少し具体的に説明していただけますか。 単純に転記元の2行目、3行目を転記先の3行目、5行目に上書きコピー、 4行目を6行目に上書きコピーでいいように思いますが、 それではダメですか。
sakura12

2021/10/06 04:51

こちらは、転記先、転記元の日付が一致しているところに、転記する形になります。 転記元のデータは、3日ごともしくは2日ごとに日付も変更となります。 日付下の数値も変更になります。 転記元の2.3.4行目を転記先の3.4.6行目に各日付ごとに転記していくように したいと考えております。
hatena19

2021/10/06 04:55 編集

日付の並びが異なるということですかね。 図示されたものは同じなってますので、実際のものに近い形で図示してもらえますか。 「3日ごともしくは2日ごとに日付も変更となります。」というのも反映したものに修正してください。 図では1日毎に変更されているようですが。
hatena19

2021/10/06 05:10 編集

ひょっとすると、転記元は、2日分もしくは3日分をまとめて入力するということでしょうかね。 例えば、今日(10/6)なら3日前から前日までのデータを入力。 日付   10/3   10/4  10/5 個数   10    50   30 金額   1000   5000  3000 本日の返品数 0   5    1
sakura12

2021/10/06 05:11

何度も大変申し訳ございません。ただいま修正を致しました。 すみません。伝え方がつたなく申し訳ございません。 よろしくお願い致します。
sakura12

2021/10/06 05:13

その通りでございます。 3日分もしくは、2日分をまとめて入力するということですね。すみません。 内容間違いございません。
hatena19

2021/10/06 05:14

質問の追記部分をみて理解できました。
sakura12

2021/10/06 05:16

申し訳ございませんでした。よろしくお願い致します。
guest

回答1

0

ベストアンサー

vba

1Sub 登録() 2 Dim ThisSh As Worksheet 3 Dim ThisCh As Worksheet 4 Set ThisSh = ThisWorkbook.Sheets("Sheet1") 5 Set ThisCh = ThisWorkbook.Sheets("Sheet2") 6 7 Dim i As Long, Col As Long 8 '↓転記元の2列目から入力のある最終列まで繰り返し処理 9 For i = 2 To ThisSh.Cells(1, Columns.Count).End(xlToLeft).Column 10 '↓転記元と同じ日付の列番号を取得 11 Col = Application.Match(ThisSh.Cells(1, i), ThisCh.Rows(1), 0) 12 '転記元の2,3,4行の値を転記先の3,4,6行目に転記 13 ThisCh.Cells(3, Col).Value = ThisSh.Cells(2, i).Value 14 ThisCh.Cells(4, Col).Value = ThisSh.Cells(3, i).Value 15 ThisCh.Cells(6, Col).Value = ThisSh.Cells(4, i).Value 16 Next 17End Sub

それぞれのコードの意味をコメントしてありますので、それを元にご理解ください。

投稿2021/10/06 05:40

hatena19

総合スコア34075

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

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

sakura12

2021/10/06 05:42

ありがとうございました! ご丁寧に本当に感謝しております。 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問