Excel VBA質問箱 IV

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

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


1169 / 13645 ツリー ←次へ | 前へ→

【75896】このコードを簡単にしたいです。 なまけもの 14/7/31(木) 11:29 質問[未読]
【75899】Re:このコードを簡単にしたいです。 kanabun 14/7/31(木) 13:22 発言[未読]
【75900】Re:このコードを簡単にしたいです。 kanabun 14/7/31(木) 13:26 発言[未読]
【75901】Re:このコードを簡単にしたいです。 なまけもの 14/7/31(木) 16:38 お礼[未読]

【75896】このコードを簡単にしたいです。
質問  なまけもの  - 14/7/31(木) 11:29 -

引用なし
パスワード
   はじめて使わせて頂きます。

以下のコードを作ったのですが、
もっと簡単にすることは可能なのでしょうか?
教えて下さい。

やりたい事は、別ブックから
VLOOKUPで複数結果を読出して
指定セルに抽出させるコードです。


Sub Macro7()
' 部品・外注抽出

' 部品の品名(1ページ目)
Range("AP11").Value = Range("B56").Value
Range("AP13").Value = Range("B57").Value
Range("AP15").Value = Range("B58").Value
Range("AP17").Value = Range("B59").Value
Range("AP19").Value = Range("B60").Value
Range("AP21").Value = Range("B61").Value
Range("AP23").Value = Range("B62").Value
Range("AP25").Value = Range("B63").Value
Range("AP27").Value = Range("B64").Value
Range("AP29").Value = Range("B65").Value
Range("AP31").Value = Range("B66").Value
Range("AP33").Value = Range("B67").Value
Range("AP35").Value = Range("B68").Value
Range("AP37").Value = Range("B69").Value
Range("AP39").Value = Range("B70").Value
Range("AP41").Value = Range("B71").Value
Range("AP43").Value = Range("B72").Value
Range("AP45").Value = Range("B73").Value

' 部品の型式またはサイズ(1ページ目)
Range("AP12").Value = Range("C56").Value
Range("AP14").Value = Range("C57").Value
Range("AP16").Value = Range("C58").Value
Range("AP18").Value = Range("C59").Value
Range("AP20").Value = Range("C60").Value
Range("AP22").Value = Range("C61").Value
Range("AP24").Value = Range("C62").Value
Range("AP26").Value = Range("C63").Value
Range("AP28").Value = Range("C64").Value
Range("AP30").Value = Range("C65").Value
Range("AP32").Value = Range("C66").Value
Range("AP34").Value = Range("C67").Value
Range("AP36").Value = Range("C68").Value
Range("AP38").Value = Range("C69").Value
Range("AP40").Value = Range("C70").Value
Range("AP42").Value = Range("C71").Value
Range("AP44").Value = Range("C72").Value
Range("AP46").Value = Range("C73").Value

' 部品の数量(1ページ目)
Range("AR11").Value = Range("G56").Value
Range("AR13").Value = Range("G57").Value
Range("AR15").Value = Range("G58").Value
Range("AR17").Value = Range("G59").Value
Range("AR19").Value = Range("G60").Value
Range("AR21").Value = Range("G61").Value
Range("AR23").Value = Range("G62").Value
Range("AR25").Value = Range("G63").Value
Range("AR27").Value = Range("G64").Value
Range("AR29").Value = Range("G65").Value
Range("AR31").Value = Range("G66").Value
Range("AR33").Value = Range("G67").Value
Range("AR35").Value = Range("G68").Value
Range("AR37").Value = Range("G69").Value
Range("AR39").Value = Range("G70").Value
Range("AR41").Value = Range("G71").Value
Range("AR43").Value = Range("G72").Value
Range("AR45").Value = Range("G73").Value

'部品の 単価 (1ページ目)
Range("AT11").Value = Range("D56").Value
Range("AT13").Value = Range("D57").Value
Range("AT15").Value = Range("D58").Value
Range("AT17").Value = Range("D59").Value
Range("AT19").Value = Range("D60").Value
Range("AT21").Value = Range("D61").Value
Range("AT23").Value = Range("D62").Value
Range("AT25").Value = Range("D63").Value
Range("AT27").Value = Range("D64").Value
Range("AT29").Value = Range("D65").Value
Range("AT31").Value = Range("D66").Value
Range("AT33").Value = Range("D67").Value
Range("AT35").Value = Range("D68").Value
Range("AT37").Value = Range("D69").Value
Range("AT39").Value = Range("D70").Value
Range("AT41").Value = Range("D71").Value
Range("AT43").Value = Range("D72").Value
Range("AT45").Value = Range("D73").Value


' 外注の品名 (1ページ目)
Range("BB11").Value = Range("J56").Value
Range("BB13").Value = Range("J57").Value
Range("BB15").Value = Range("J58").Value
Range("BB17").Value = Range("J59").Value
Range("BB19").Value = Range("J60").Value
Range("BB21").Value = Range("J61").Value
Range("BB23").Value = Range("J62").Value
Range("BB25").Value = Range("J63").Value
Range("BB27").Value = Range("J64").Value
Range("BB29").Value = Range("J65").Value
Range("BB31").Value = Range("J66").Value
Range("BB33").Value = Range("J67").Value
Range("BB35").Value = Range("J68").Value
Range("BB37").Value = Range("J69").Value
Range("BB39").Value = Range("J70").Value
Range("BB41").Value = Range("J71").Value
Range("BB43").Value = Range("J72").Value
Range("BB45").Value = Range("J73").Value

' 部品の型式またはサイズ(1ページ目)
Range("BB12").Value = Range("P56").Value
Range("BB14").Value = Range("P57").Value
Range("BB16").Value = Range("P58").Value
Range("BB18").Value = Range("P59").Value
Range("BB20").Value = Range("P60").Value
Range("BB22").Value = Range("P61").Value
Range("BB24").Value = Range("P62").Value
Range("BB26").Value = Range("P63").Value
Range("BB28").Value = Range("P64").Value
Range("BB30").Value = Range("P65").Value
Range("BB32").Value = Range("P66").Value
Range("BB34").Value = Range("P67").Value
Range("BB36").Value = Range("P68").Value
Range("BB38").Value = Range("P69").Value
Range("BB40").Value = Range("P70").Value
Range("BB42").Value = Range("P71").Value
Range("BB44").Value = Range("P72").Value
Range("BB46").Value = Range("P73").Value

' 外注の数量 (1ページ目)
Range("BD11").Value = Range("W56").Value
Range("BD13").Value = Range("W57").Value
Range("BD15").Value = Range("W58").Value
Range("BD17").Value = Range("W59").Value
Range("BD19").Value = Range("W60").Value
Range("BD21").Value = Range("W61").Value
Range("BD23").Value = Range("W62").Value
Range("BD25").Value = Range("W63").Value
Range("BD27").Value = Range("W64").Value
Range("BD29").Value = Range("W65").Value
Range("BD31").Value = Range("W66").Value
Range("BD33").Value = Range("W67").Value
Range("BD35").Value = Range("W68").Value
Range("BD37").Value = Range("W69").Value
Range("BD39").Value = Range("W70").Value
Range("BD41").Value = Range("W71").Value
Range("BD43").Value = Range("W72").Value
Range("BD45").Value = Range("W73").Value

'外注の 単価 (1ページ目)
Range("BE11").Value = Range("U56").Value
Range("BE13").Value = Range("U57").Value
Range("BE15").Value = Range("U58").Value
Range("BE17").Value = Range("U59").Value
Range("BE19").Value = Range("U60").Value
Range("BE21").Value = Range("U61").Value
Range("BE23").Value = Range("U62").Value
Range("BE25").Value = Range("U63").Value
Range("BE27").Value = Range("U64").Value
Range("BE29").Value = Range("U65").Value
Range("BE31").Value = Range("U66").Value
Range("BE33").Value = Range("U67").Value
Range("BE35").Value = Range("U68").Value
Range("BE37").Value = Range("U69").Value
Range("BE39").Value = Range("U70").Value
Range("BE41").Value = Range("U71").Value
Range("BE43").Value = Range("U72").Value
Range("BE45").Value = Range("U73").Value

' 部品の品名(2ページ目)
Range("AP53").Value = Range("B74").Value
Range("AP55").Value = Range("B75").Value
Range("AP57").Value = Range("B76").Value
Range("AP59").Value = Range("B77").Value
Range("AP61").Value = Range("B78").Value
Range("AP63").Value = Range("B79").Value
Range("AP65").Value = Range("B80").Value
Range("AP67").Value = Range("B81").Value
Range("AP69").Value = Range("B82").Value
Range("AP71").Value = Range("B83").Value
Range("AP73").Value = Range("B84").Value
Range("AP75").Value = Range("B85").Value
Range("AP77").Value = Range("B86").Value
Range("AP79").Value = Range("B87").Value
Range("AP81").Value = Range("B88").Value
Range("AP83").Value = Range("B89").Value
Range("AP85").Value = Range("B90").Value
Range("AP87").Value = Range("B91").Value

' 部品の型式またはサイズ(2ページ目)
Range("AP54").Value = Range("C74").Value
Range("AP56").Value = Range("C75").Value
Range("AP58").Value = Range("C76").Value
Range("AP50").Value = Range("C77").Value
Range("AP62").Value = Range("C78").Value
Range("AP64").Value = Range("C79").Value
Range("AP66").Value = Range("C80").Value
Range("AP68").Value = Range("C81").Value
Range("AP60").Value = Range("C82").Value
Range("AP72").Value = Range("C83").Value
Range("AP74").Value = Range("C84").Value
Range("AP76").Value = Range("C85").Value
Range("AP78").Value = Range("C86").Value
Range("AP70").Value = Range("C87").Value
Range("AP82").Value = Range("C88").Value
Range("AP84").Value = Range("C89").Value
Range("AP86").Value = Range("C90").Value
Range("AP88").Value = Range("C91").Value

' 部品の数量(2ページ目)
Range("AR53").Value = Range("G74").Value
Range("AR55").Value = Range("G75").Value
Range("AR57").Value = Range("G76").Value
Range("AR59").Value = Range("G77").Value
Range("AR61").Value = Range("G78").Value
Range("AR63").Value = Range("G79").Value
Range("AR65").Value = Range("G80").Value
Range("AR67").Value = Range("G81").Value
Range("AR69").Value = Range("G82").Value
Range("AR71").Value = Range("G83").Value
Range("AR73").Value = Range("G84").Value
Range("AR75").Value = Range("G85").Value
Range("AR77").Value = Range("G86").Value
Range("AR79").Value = Range("G87").Value
Range("AR81").Value = Range("G88").Value
Range("AR83").Value = Range("G89").Value
Range("AR85").Value = Range("G90").Value
Range("AR87").Value = Range("G91").Value


' 外注の品名 (2ページ目)
Range("BB53").Value = Range("J74").Value
Range("BB55").Value = Range("J75").Value
Range("BB57").Value = Range("J76").Value
Range("BB59").Value = Range("J77").Value
Range("BB61").Value = Range("J78").Value
Range("BB63").Value = Range("J79").Value
Range("BB65").Value = Range("J80").Value
Range("BB67").Value = Range("J81").Value
Range("BB69").Value = Range("J82").Value
Range("BB71").Value = Range("J83").Value
Range("BB73").Value = Range("J84").Value
Range("BB75").Value = Range("J85").Value
Range("BB77").Value = Range("J86").Value
Range("BB79").Value = Range("J87").Value
Range("BB81").Value = Range("J88").Value
Range("BB83").Value = Range("J89").Value
Range("BB85").Value = Range("J90").Value
Range("BB87").Value = Range("J91").Value


End Sub

【75899】Re:このコードを簡単にしたいです。
発言  kanabun  - 14/7/31(木) 13:22 -

引用なし
パスワード
   ▼なまけもの さん:


>以下のコードを作ったのですが、
>もっと簡単にすることは可能なのでしょうか?

配列内で転記してみますか?
専用下請けサブプロシージャを2つ作っておきます。
1つは trans2 で 転記元2列 → 転記先1列
もうひとつは
   trans1 で 転記元1列(連続データ)→転記先(1行おき)

呼び出すとき、各範囲の先頭セルと 転記元側の行数を渡してやります。

Sub 部品外注抽出()
 Const m = 18 '元範囲行数
 
 '部品の品名 + 部品の型式またはサイズ (1ページ目)
  trans2 [B56], [C56], m, [AP11]

  ' 部品の数量(1ページ目)
  trans1 [G56], m, [AR11]

  '部品の 単価 (1ページ目)
  trans1 [D56], m, [AT11]
  
 '外注の品名 + 型式またはサイズ (1ページ目)
  trans2 [J56], [P56], m, [BB11]

  ' 外注の数量 (1ページ目)
  trans1 [W56], m, [BD11]

  '外注の 単価 (1ページ目)
  trans1 [U56], m, [BE11]
  
  
 '部品の品名 + 部品の型式またはサイズ (1ページ目)
  trans2 [B74], [C74], m, [AP53]

  ' 部品の数量(1ページ目)
  trans1 [G74], m, [AR53]

  '部品の 単価 (1ページ目)
  trans1 [J74], m, [BB53]
  
End Sub

Private Sub trans2(c1 As Range, c2 As Range, m As Long, r As Range)
  Dim a, b
  Dim v
  Dim i As Long, j As Long, n As Long: n = m + m
  
  a = c1.Resize(m).Value
  b = c2.Resize(m).Value
  v = r.Resize(n).Value
  For i = 1 To n Step 2
    j = j + 1
    v(i, 1) = a(j, 1)
    v(i + 1, 1) = b(j, 1)
  Next
  r.Resize(n).Value = v
End Sub

Private Sub trans1(c1 As Range, m As Long, r As Range)
  Dim a
  Dim v
  Dim i As Long, j As Long, n As Long: n = m + m
  
  a = c1.Resize(m).Value
  v = r.Resize(n).Value
  For i = 1 To n Step 2
    j = j + 1
    v(i, 1) = a(j, 1)
  Next
  r.Resize(n).Value = v
End Sub

【75900】Re:このコードを簡単にしたいです。
発言  kanabun  - 14/7/31(木) 13:26 -

引用なし
パスワード
   コメントが違ってました m(_ _)m

1ページ目 → 2ページ目

 '部品の品名 + 部品の型式またはサイズ (2ページ目)
  trans2 [B74], [C74], m, [AP53]

  ' 部品の数量 (2ページ目)
  trans1 [G74], m, [AR53]

  '部品の 単価 (2ページ目)
  trans1 [J74], m, [BB53]

【75901】Re:このコードを簡単にしたいです。
お礼  なまけもの  - 14/7/31(木) 16:38 -

引用なし
パスワード
   ▼kanabun さん
有難うございます。
前よりも処理速度もあがったようでよかったです。

有難うございました。

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