Excel VBA質問箱 IV

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

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


6515 / 13646 ツリー ←次へ | 前へ→

【44790】数量分分割して、決まった表に貼り付けるには? えん 06/12/1(金) 13:35 質問[未読]
【44791】Re:数量分分割して、決まった表に貼り付け... maverick 06/12/1(金) 14:47 回答[未読]
【44809】Re:数量分分割して、決まった表に貼り付け... Kein 06/12/1(金) 17:58 回答[未読]

【44790】数量分分割して、決まった表に貼り付ける...
質問  えん  - 06/12/1(金) 13:35 -

引用なし
パスワード
   ちょっと悩んでおり分る方おりましたら教えて下さい。
関数を使用してできるのかVBAを使用しないと
できないのかも検討がついておりません。

例)

sheet1に下記ような、品番・数量の表があります。

   A     B
1  品番  数量
2 1234  1
3 1222  10
4 1333  5
5
6


同じsheet1に下記な表が空欄であって、その数量1ずつ
上から順番に品番を数量分貼り付けて表を完成
させたいのですが可能ですか?
とりあえず、列はAとBの2列です。
0台のときは、表には貼り付けません。
  A    B
1 1234 1222
2 1222 1222
3 1222 1222
4 1222 1222
5 1222 1222
6 1222 1333
7 1333 1333
8 1333 1333


説明不足で済みませんが、宜しくお願い致します。

【44791】Re:数量分分割して、決まった表に貼り付...
回答  maverick  - 06/12/1(金) 14:47 -

引用なし
パスワード
   Sub test()
  Dim tmp() As Variant
  Dim i As Long, j As Long
  Dim rw As Long, cnt As Long

  rw = Range("A65536").End(xlUp).Row
  ReDim tmp(1, rw)
  cnt = 2

  For i = 0 To rw - 1
    tmp(0, i) = Cells(i + 2, 1).Value
    tmp(1, i) = Cells(i + 2, 2).Value
  Next i
  For i = 0 To rw - 1
    For j = 1 To tmp(1, i)
      Cells(cnt \ 2, cnt Mod 2 + 1) = tmp(0, i)
      cnt = cnt + 1
    Next j
  Next i
End Sub

【44809】Re:数量分分割して、決まった表に貼り付...
回答  Kein  - 06/12/1(金) 17:58 -

引用なし
パスワード
   >列はAとBの2列
この2列にどのように割り振るのか、そのルールが分からないと
途中までの処理しか回答できません。なのでいちおう、D1から下へ
1列に並べてみるとして・・

Sub MyData_Splt()
  Dim St As String
  Dim i As Long, Cnt As Long
  Dim Ary As Variant
  Dim C As Range
 
  With Worksheets("Sheet1")
   For Each C In .Range("A2", .Range("A65536").End(xlUp))
     Cnt = C.Offset(, 1).Value
     If Cnt > 0 Then
      For i = 1 To Cnt
        St = St & C.Value & ","
      Next i
     End If
   Next
   St = Left$(St, Len(St) - 1)
   Ary = WorksheetFunction.Transpose(Split(St, ","))
   .Range("D1").Resize(UBound(Ary)).Value = Ary
  End With
  Erase Ary
End Sub

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