Я нашел немного VBA, которая помогает мне делать то, что я хочу делать, включая следующее:

With ThisWorkbook.Sheets(TargetSh) 
NxtEmptyRw = .Cells(65536, 1).End(xlUp).Row + 1 
.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw, 3).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw, 4).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 
End With 
End Sub

Как бы я адаптировал строку, относящуюся к G2 , чтобы она возвращала значение под значением C2 , вместо того, чтобы продолжать по одной и той же строке - эффективно создавая таблицу из двух строк в два столбца, а не из таблицы один ряд в четыре столбца?

2 ответа2

0

Я бы предпочел более короткое решение, подобное этому:

With ThisWorkbook.Sheets(TargetSh) 
  NxtEmptyRw = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 
  ActiveWorkbook.Sheets(SourceSh).Range("C2:C3,G2:G3").Copy
  .Cells(NxtEmptyRw, 1).PasteSpecial xlPasteValues, , , True
End With
0

Заменить:

.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw, 3).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw, 4).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 

с:

.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw + 1, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw + 1, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .