Range.End以空白VBA

时间:2018-08-20 20:50:28

标签: excel vba excel-vba

我正在尝试创建一个动态范围,该范围将从固定的一组单元格中恢复所有结果,不幸的是,我在Range.End方法上遇到了麻烦,因为它们之间有空格。例如,A8:A10中可能没有值,但它可能始于A11,并且该行中将包含数据。所有表格都会有所不同,但固定在下面的单元格区域。

我还看到了Range.Find,但我也无法使它正常工作。

单元格范围是:A8:F18

lastRow = ThisWorkbook.Worksheets("Sheet2").Cells(Rows.Count, 2).End(xlUp).Row + 1

ThisWorkbook.Worksheets("Sheet2").Range("B" & lastRow).Formula = _
    Source.Worksheets("SUMMARY DATA SHEET").Range("A8").Value
ThisWorkbook.Worksheets("Sheet2").Range("D" & lastRow).Formula = _
    Source.Worksheets("SUMMARY DATA SHEET").Range("D8").Value
ThisWorkbook.Worksheets("Sheet2").Range("A" & lastRow).Formula = _
    Source.Worksheets("SUMMARY DATA SHEET").Range("B4").Value
ThisWorkbook.Worksheets("Sheet2").Range("E" & lastRow).Formula = _
    Source.Worksheets("SUMMARY DATA SHEET").Range("F8").Value
ThisWorkbook.Worksheets("Sheet2").Range("C" & lastRow).Formula = _
    Source.Worksheets("SUMMARY DATA SHEET").Range("E8").Value

       A     B     C       D        E         F           
10  vendor1 ACH vendor1  500.00     XXX 0118-CLIENT-XLIVES
11  vendor2 ACH vendor2  600.00     XX  0118-CLIENT-XLIVES
12  vendor3 ACH vendor3  400.00     XX  0118-CLIENT-XLIVES
13  vendor4 ACH vendor4  $900.00    XXX  0118-CLIENT-XLIVES
14  vendor5 ACH vendor5  $6,000.00   0118-CLIENT-XLIVES
15  vendor6 ACH vendor6  $800.00         0118-CLIENT-XLIVES
16  vendor7 ACH vendor7  $88,000.00      0118-CLIENT-XLIVES

1 个答案:

答案 0 :(得分:0)

听起来您需要在Range("A8:A18")中找到包含数据的第一行,如果该假设正确,那么这是一个示例:

Sub foo()
Dim Source As Workbook
Dim wsTarget As Worksheet, wsSource As Worksheet
Dim sourceRange As Range
Dim targetLastRow As Long, sourceFirstRow As Long
Set Source = ThisWorkbook ' ### MODIFY AS NEEDED

Set wsSource = Source.Worksheets("Sheet1") '#Source.Worksheets("SUMMARY DATA SHEET")
Set sourceRange = wsSource.Range("A8:A18")
sourceFirstRow = sourceRange.Find("*", After:=wsSource.Range("A8")).Row

Set wsTarget = ThisWorkbook.Worksheets("Sheet2")
targetLastRow = wsTarget.Cells(Rows.Count, 2).End(xlUp).Row + 1

wsTarget.Range("B" & targetLastRow).Value = _
    wsSource.Range("A" & sourceFirstRow).Value

wsTarget.Range("D" & targetLastRow).Value = _
    wsSource.Range("D" & sourceFirstRow).Value

' etc...

End Sub

如果您要从第8-18行中所有有数据的单元格中传输数据,并且还假设第一行之后 的每一行都有数据,那么我认为您只需要修改{ {1}},并使用sourceRange对目标进行一些更改:

Resize