同じ値を5行に貼り付けるには | |
---|---|
[195723] 同じ値を5行に貼り付けるには- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ チューリップ -(2023/05/13(06:16)) □U R L/ 下記のようにVBで日付の部分を連続して貼り付ける事はできるのでしょうか。 <Sheet1> A B C D 日付 リンゴ みかん ばなな 2023/01/01 10 20 30 <Sheet2> A B C 日付 カテゴリー 数量 2023/01/01 リンゴ 10 2023/01/01 みかん 20 2023/01/01 ばなな 30 |
[195724] Re[1]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2023/05/13(12:39)) □U R L/ 事例を見ると、行列を入れ替えて転記、でいかも、 3行だと思うのですが。 やりたいことが見えません。 |
[195725] Re[2]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/05/13(13:11)) □U R L/ こんな事かな? Sub test() Dim r As Range, Title, DT As Date, OUT(1 To 3) Dim i As Long, CL As Long, Pos As Long Dim WsOut As Worksheet Set WsOut = Sheets("Sheet2") WsOut.UsedRange.ClearContents WsOut.Range("A1:C1") = Array("日付", "カテゴリー", "数量") With Sheets("Sheet1") Set r = .Range("A1").CurrentRegion Title = r.Rows(1) Pos = 1 For i = 2 To r.Rows.Count DT = .Cells(i, "A").Value For CL = 2 To r.Columns.Count If .Cells(i, CL) <> "" Then Pos = Pos + 1 OUT(1) = DT OUT(2) = Title(1, CL) OUT(3) = .Cells(i, CL) WsOut.Cells(Pos, "A").Resize(1, 3) = OUT End If Next CL Next i End With End Sub <Sheet1 シート サンプル> <Sheet2 シート 結果図> 行 ____A____ ___B___ ___C___ ___D___ _E_ 行 ____A____ _____B_____ __C__ 1 日付 リンゴ みかん ばなな 梨 1 日付 カテゴリー 数量 2 2023/1/1 10 20 30 2 2023/1/1 リンゴ 10 3 2023/5/11 11 21 40 3 2023/1/1 みかん 20 4 2023/1/1 ばなな 30 5 2023/5/11 リンゴ 11 6 2023/5/11 みかん 21 7 2023/5/11 梨 40 |
[195726] Re[3]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ チューリップ -(2023/05/13(13:31)) □U R L/ MKさん、アドバイスありがとうございます。 例として、3種類のみ表示しました。 半平太さん、ありがとうございます。 すごいです!\(^o^)/ CODEの内容で教えてください。 @変数の「Pos」は どういう意味でしょうか。 A日付がカテゴリー分 貼付けされるのはどの部分でしょうか。 よろしくお願いいたします。 |
[195727] Re[4]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/05/13(13:42)) □U R L/ >@変数の「Pos」は どういう意味でしょうか。 書き込みすべき行番号(行位置。行ポジション)です。 変数を RowToWrite としたら分かり易いですか。 >A日付がカテゴリー分 貼付けされるのはどの部分でしょうか。 WsOut.Cells(Pos, "A").Resize(1, 3) = OUT 1行ずつ書き出しています。 OUTは書き出すべきデータの配列です。(1行分だけ) 例: {2023/1/1,リンゴ,10} |
[195728] Re[5]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ チューリップ -(2023/05/13(14:21)) □U R L/ 半平太さん 早々の回答ありがとうございます。 @は、理解できたのですが、 Aは、わかりにくいです。 以下、下記の部分のコードを読み解いたのですが…。 For i = 2 To r.Rows.Count DT = .Cells(i, "A").Value For CL = 2 To r.Columns.Count If .Cells(i, CL) <> "" Then Pos = Pos + 1 OUT(1) = DT OUT(2) = Title(1, CL) OUT(3) = .Cells(i, CL) WsOut.Cells(Pos, "A").Resize(1, 3) = OUT End If Next CL Next i Sheet1の2行目から行数分だけ繰り返す。 DTはA1 2列目から列数ぶんだけ繰り返す 空白の列がある場合は抜ける 書き込む行は1行ずつ増加 Sheet2の1列2行目以降には 日付 Sheet2の2列2行目以降には カテゴリの品名 Sheet2の3列2行目以降には 数量 A列の書き出す行番号の位置に1行3列でデータを貼付けていく…。 どうでしょうか。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195729] Re[6]: 同じ値を5行に貼り付けるには- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/05/13(15:04)) □U R L/ >どうでしょうか 良いと思います。 |
[195730] Re[7]: 同じ値を5行に貼り付けるには- ■ / 記事引用/メール受信=OFF■ □投稿者/ チューリップ -(2023/05/13(16:31)) □U R L/ ありがとうございます。 これを参考にして他の資料にも応用していきたいと思います。 |
このトピックに書きこむ |
---|