[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データを種別毎に、別シートに振り分けできないでしょうか。』(pomy)
はじめまして。
マクロ初心者です。
調べつくして下記の様な 『A列』に『1』が入力された行を明細シートへ転記
できるよう作ったのですが、内容の変更を要求され困っています。。。
やりたい事は・・・
『A列』に『1』が入力され、尚且つ『D列』の種別毎に振り分け別シートに
振り分けたいです。
例)1列:1 D列:A の場合 →『A明細』シートへ転記
1列:1 D列:B の場合 →『B明細』シートへ転記
1列:1 D列:C の場合 →『CD明細』シートの1行〜50行へ転記
1列:1 D列:D の場合 →『CD明細』シートの51行〜100行へ転記
※種別(C・D)は、件数が最大50件の為、一つのシートにまとめたいです。
解る方おられましたらご指南よろしくお願い致します。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Sub 転記()
'リストシート:『A列』に『1』が入力された行を明細シートへ転記
Sheets("明細").Range("A2:N5000").ClearContents
Dim i, lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
If Cells(i, 1) = "1" Then
Rows(i).Copy Sheets("明細").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next i
MsgBox "転記完了"
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub 転記() Dim i As Long Dim j As Long Dim iR(3) As Long Dim vw1 As Variant Dim vw2 As Variant
vw1 = Array("A", "B", "C", "D") vw2 = Array("A明細", "B明細", "CD明細", "CD明細")
Application.ScreenUpdating = False
For i = 0 To 2 iR(i) = 2 Sheets(vw2(i)).Range("A2:N5000").ClearContents Next i iR(3) = 53
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, "A").Text = "1" Then For j = 0 To 3 If Cells(i, "D").Value = vw1(j) Then With Sheets(vw2(j)) Rows(i).Copy .Cells(iR(j), 1) iR(j) = iR(j) + 1 End With Exit For End If Next j End If Next i
Application.ScreenUpdating = True MsgBox "転記完了", vbInformation, "終了" End Sub (???) 2014/10/21(火) 17:04
シートを追加したくて、下記の部分に其々『種別名と、シート名』を追加しましたが
転記できませんでした。
他にどこを修正すれば良いでしょうか?
修正した箇所
vw1 = Array("A", "B", "C", "D", "E") vw2 = Array("A明細", "B明細", "CD明細", "CD明細", "E明細") (pomy) 2014/10/23(木) 09:26
下記の様に修正してみたのですが、エラーが出てしまいます。
何故でしょうか???
因みにAとBは正しく転記されますが、CD明細には種別Dが転記されず
E明細は、種別Eが転記されるべき2行以降が空欄で、
種別Fが転記されるべき53行以降に種別Eが転記されています。
種別Fは転記されていません。
−−−−−−−
Sub 転記()
Dim i As Long Dim j As Long Dim iR(4) As Long Dim vw1 As Variant Dim vw2 As Variant vw1 = Array("A", "B", "C", "D", "E", "F") vw2 = Array("A明細", "B明細", "CD明細", "CD明細", "E明細","E明細") Application.ScreenUpdating = False For i = 0 To 2 iR(i) = 2 Sheets(vw2(i)).Range("A2:N5000").ClearContents Next i iR(4) = 53 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, "A").Text = "1" Then For j = 0 To 4 If Cells(i, "D").Value = vw1(j) Then With Sheets(vw2(j)) Rows(i).Copy .Cells(iR(j), 1) ←この部分でエラーが出てしまいます。 iR(j) = iR(j) + 1 End With Exit For End If Next j End If Next i Application.ScreenUpdating = True MsgBox "転記完了", vbInformation, "終了" End Sub −−−−−−− (pomy) 2014/10/23(木) 15:08
iR(3) = 53
iR(4) = 2
iR(5) = 53
(???) 2014/10/23(木) 15:28
本当に、本当に、
ありがとうございました!!!!!!
(pomy) 2014/10/23(木) 16:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.