戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
同じ値を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
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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/

      ありがとうございます。

      これを参考にして他の資料にも応用していきたいと思います。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G