Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


220 / 13620 ツリー ←次へ | 前へ→

【81343】横並びの表 数字が入っているセルのみ 猫ママ 20/6/8(月) 14:57 質問[未読]
【81344】Re:横並びの表 数字が入っているセルのみ マナ 20/6/8(月) 19:03 発言[未読]
【81345】Re:横並びの表 数字が入っているセルのみ マナ 20/6/8(月) 19:17 発言[未読]
【81346】Re:横並びの表 数字が入っているセルのみ 猫ママ 20/6/9(火) 8:23 お礼[未読]

【81343】横並びの表 数字が入っているセルのみ
質問  猫ママ  - 20/6/8(月) 14:57 -

引用なし
パスワード
   VBA初心者です、どうか教えてください。


     ぶどう  りんご  白桃
稲川尚美      1           1
蜂須 汐           2       1


商品名の下に件数が入っている表があります。件数が入っているセルだけ


ぶどう      白桃       りんご     りんご       白桃
稲川尚美 稲川尚美 蜂須 汐    蜂須 汐  蜂須 汐


商品名と名前を別シートに貼り付けたいです。2件以上の場合はその件数分連続で
貼り付けたいです。
お手数お掛け致しますがよろしくお願いいたします。

【81344】Re:横並びの表 数字が入っているセルのみ
発言  マナ  - 20/6/8(月) 19:03 -

引用なし
パスワード
   ▼猫ママ さん:

>VBA初心者です

こんな感じが、わかりやすいかもしれません。

Sub test()
  Dim w() As String
  Dim r As Range
  Dim j As Long, k As Long, i As Long
  Dim 名前 As String, 商品 As String
  Dim n As Long
  
  Set r = Cells(1).CurrentRegion
  
  For j = 2 To r.Rows.Count
    名前 = r.Cells(j, 1).Value
    For k = 2 To r.Columns.Count
      商品 = r.Cells(1, k).Value
      For i = 1 To r.Cells(j, k).Value
        n = n + 1
        ReDim Preserve w(1 To 2, 1 To n)
        w(1, n) = 商品
        w(2, n) = 名前
      Next
    Next
  Next
  
  With Worksheets.Add
    .Cells(1).Resize(2, n).Value = w
  End With
  
End Sub

【81345】Re:横並びの表 数字が入っているセルのみ
発言  マナ  - 20/6/8(月) 19:17 -

引用なし
パスワード
   ▼猫ママ さん:

配列を使わないほうが、わかりやすかったですね。

Sub test2()
  Dim r As Range
  Dim j As Long, k As Long, i As Long
  Dim 名前 As String, 商品 As String
  Dim n As Long
  
  Set r = Worksheets("1").Cells(1).CurrentRegion
  
  For j = 2 To r.Rows.Count
    名前 = r.Cells(j, 1).Value
    For k = 2 To r.Columns.Count
      商品 = r.Cells(1, k).Value
      For i = 1 To r.Cells(j, k).Value
        n = n + 1
        Worksheets("2").Cells(1, n).Value = 商品
        Worksheets("2").Cells(2, n).Value = 名前
      Next
    Next
  Next

End Sub

【81346】Re:横並びの表 数字が入っているセルのみ
お礼  猫ママ  - 20/6/9(火) 8:23 -

引用なし
パスワード
   返信ありがとうございました!!!

バッチリです、これで業務がかなり改善出来ます。

もっとVBA勉強します。

本当にありがとうございました。


▼マナ さん:
>▼猫ママ さん:
>
>配列を使わないほうが、わかりやすかったですね。
>
>Sub test2()
>  Dim r As Range
>  Dim j As Long, k As Long, i As Long
>  Dim 名前 As String, 商品 As String
>  Dim n As Long
>  
>  Set r = Worksheets("1").Cells(1).CurrentRegion
>  
>  For j = 2 To r.Rows.Count
>    名前 = r.Cells(j, 1).Value
>    For k = 2 To r.Columns.Count
>      商品 = r.Cells(1, k).Value
>      For i = 1 To r.Cells(j, k).Value
>        n = n + 1
>        Worksheets("2").Cells(1, n).Value = 商品
>        Worksheets("2").Cells(2, n).Value = 名前
>      Next
>    Next
>  Next
>
>End Sub

220 / 13620 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free