• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAとデータの転記について)

VBAとデータの転記について

このQ&Aのポイント
  • エクセル2003で作成した評価表データをVBAで別シートに転記したい。
  • 毎月の商品の件数が不明なため、連番記載とループ処理の使い方がわからない。
  • VBAを使用して評価がある場合は○印を転記し、空白はそのままにしたい。手作業が大変になっている。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

特にループをする必要もありません。 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)
回答No.2

ではご要望により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