使用VBA从Excel中的命名范围自动填充到未命名的目标

时间:2011-04-29 07:59:12

标签: excel vba excel-vba

我正在尝试从命名范围自动填充到其右邻居单元格。原始范围包含组合单元格,大小为4x4个单元格。我的问题是,Autofill - 方法需要Destination:=Range("..."),并且不需要Destination:=xlSameAreaToTheRight之类的内容。

解决方法是,如果我可以做类似

的事情
Range("origin").AutoFill Destination:=( Range("origin").Area + Rows(4) ), _
                         Type:=xlFillDefault

那么如何以A1:D4格式找到命名范围的行和列,并添加4个cols?

感谢您的支持!

3 个答案:

答案 0 :(得分:3)

我不确定你想得到什么结果,但这里是你特定问题的答案:

您可以使用.Address以$ A $ 1:$ D $ 4格式获取Range as String,并获取列数量,只需将.Columns.Count添加到指定范围。 (使用偏移量可以将列数量添加到您的范围内的活动单元格中。)

Dim TestRange As String
Dim AmountColumns As Integer

TestRange = ActiveWorkbook.Sheets(1).Range("Test").Address
AmountColumns = ActiveWorkbook.Sheets(1).Range("Test").Columns.Count

答案 1 :(得分:0)

感谢stema的回答,我找到了一个(非常简单的)解决方案:

要将行或列添加到命名范围并将其用作自动填充目标,只需执行

即可
Range("origin").AutoFill Destination:=( Range("origin").Range("A1:H2") ), _
                         Type:=xlFillDefault

什么会自动填充四列和两行到我们的“原点”:

|       1       |       2       |
|  1,1  |  1,2  |  2,1  |  2,2  |

这导致:

|       1       |       2       |       3       |       4       |
|  1,1  |  1,2  |  2,1  |  2,2  |  2,7  |  3,12 |  3,54 |  3,96 |

答案 2 :(得分:0)

这是使用@stema建议的一种方法。

Sub namedfill()

    Dim locOrig As String
    Dim firstCell As String
    Dim lastCell As String

    'Pluck address of top-left and bottom-right cells from .Address string
    locOrig = Range("Origin").Address
    firstCell = Left(locOrig, 4)
    lastCell = Right(locOrig, 4)

    Range("Origin").AutoFill Destination:=Range(firstCell, Range(lastCell).Offset(0, 4)), Type:=xlFillDefault

End Sub