如何在单列中多次粘贴数据直到下一个空白单元格?

时间:2019-01-07 16:38:55

标签: excel vba rows

我试图用一列包含几个信息块的列(即6个列表,在同一列中用4-5行的空格分隔),并将标识符粘贴到列表中的每个条目旁边。在这种情况下,标识符是相同的,因为这是将1个信息块中的所有条目匹配为单个名称的一种方法。

具有ID的列表
enter image description here

每个列表都包含1个篮子内的债券,因此为了使每个债券与其篮子匹配,我使代码在列表的每个条目旁边输入篮子的名称。

代码转到列表中的第一个条目,在紧挨着它的单元格中输入一个标识符(例如“ ECB”),然后将该输入向下扩展直到最后一行。但是,我希望代码只扩展到列表中的最后一个条目(例如,从I5到I3457)。下一段代码(在本例中为“ ECB扩展”)将从I13504到I17046。

在第一个单元格中执行Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))代码时,会出现问题,它不会在列表的最后一个条目中停止,但是会下降到整个工作表的最后一行(例如I140454) :

问题
enter image description here

Sub GCPooling_Basket_Matching()

Macro3 Macro
Sheets("GC").Select

'ECB

    Range("I5").Select
    ActiveCell.FormulaR1C1 = "ECB"
    Range("I5").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))


'ECB Extended

    Range("I3504").Select
    ActiveCell.FormulaR1C1 = "EXT"
    Range("I3504").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))


'INT MXQ

    Range("I17204").Select
    ActiveCell.FormulaR1C1 = "MAXQ"
    Range("I17204").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))


'Equity

    Range("I19204").Select
    ActiveCell.FormulaR1C1 = "Equity"
    Range("I19204").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))    

End Sub

有人知道将“ ECB”从I5扩展到I3457并使其停在I3457的方法吗?

3 个答案:

答案 0 :(得分:1)

我认为您可以使用Offset来避免问题,并在现有数据上使用XlDown。例如,如果您只有A和B列,并且想像这样在C上自动填充ECB和ETF:

enter image description here

您可以使用此代码,而您将避免使用BruceWayne告诉您的有关最佳实践的信息:

Sub jason()

Range(Range("B5").Offset(0, 1), Range("B5").End(xlDown).Offset(0, 1)) = "ECB"
Range(Range("B22").Offset(0, 1), Range("B22").End(xlDown).Offset(0, 1)) = "ETF"

End Sub

答案 1 :(得分:1)

如果您不知道范围从哪里开始,可以尝试这样的方法。我不太了解您的代码如何适应块数,因此可能需要调整位。

Sub x()

Dim r As Range, v As Variant, i As Long

v = Array("ECB", "EXT", "MAXQ", "Equity")

For Each r In Columns(1).SpecialCells(xlCellTypeConstants).Areas
    r.Offset(, 1) = v(i)
    i = i + 1
Next r

End Sub

enter image description here

答案 2 :(得分:0)

有关如何处理此类问题的几种想法,请参见下面的链接。

https://www.ablebits.com/office-addins-blog/2014/05/02/fill-blanks-excel/

此外,请考虑打开Macro Recorder,然后再单击所有步骤以获取代码来一遍又一遍地执行此类操作。