- ベストアンサー
VBAとデータの転記について
- エクセル2003で作成した評価表データをVBAで別シートに転記したい。
- 毎月の商品の件数が不明なため、連番記載とループ処理の使い方がわからない。
- VBAを使用して評価がある場合は○印を転記し、空白はそのままにしたい。手作業が大変になっている。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
特にループをする必要もありません。 sub Sample1() dim LastRow as long lastrow = worksheets("Sheet1").range("B65536").end(xlup).row if lastrow =1 then exit sub with worksheets("Sheet1").range("A2:A" & lastrow) .formula = "=ROW(A1)" .value = .value end with worksheets("Sheet2").cells.clearcontents worksheets("Sheet1").cells.copy destination:=worksheets("Sheet2").range("A1") on error resume next worksheets("Sheet2").range("D2:F" & lastrow).specialcells(xlcelltypeconstants).value = "○" end sub #Sheet1と2の表の体裁がキチンと事前に準備できているときは,シート1から2に転記する部分を改善した方がよい よく判らないときはこのままで。
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
ではご要望によりLoopさせる方法の一例です。 Sub test01() Dim ws(1 To 2) As Worksheet Dim myC As Range Dim i As Long, n As Long Set ws(1) = Sheets("Sheet1") Set ws(2) = Sheets("Sheet2") Set myC = ws(1).Range("B2") With ws(2) .Cells.ClearContents .Range("A1:F1").Value = ws(1).Range("A1:F1").Value Do While myC.Value <> "" i = i + 1 .Range(myC.Offset(0, -1).Address) = i .Range(myC.Address) = myC.Value For n = 1 To 4 .Range(myC.Offset(0, n).Address) = IIf(myC.Offset(0, n).Value <> "", "○", Empty) Next n Set myC = myC.Offset(1) Loop End With End Sub