将范围内的范围合并到Excel VBA中的范围公式中

时间:2018-03-26 09:59:48

标签: excel vba excel-vba

在单元格A1和A2中,我有一个连接公式,分别产生X1:X2和Y1:Y2,其中字母和数值都取决于工作表中的某些公式。

在VBA中,我希望分别对A1和A2中的描述范围进行梳理。我尝试了以下公式,但它不起作用:

Sub Sort()
    Dim myrange1 As String
    Dim myrange2 As String
    myrange1 = A1
    myrange2 = a2
    Range(myrange1).Select
    ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Add Key:=Range( _
        "X2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sample generator").Sort
        .SetRange Range(myrange1)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range(myrange2).Select
    ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Add Key:=Range( _
        "X4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sample generator").Sort
        .SetRange Range(myrange2)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

谢谢!

2 个答案:

答案 0 :(得分:1)

你写的方式:

Sub Sort()
    Dim myrange1 As String
    Dim myrange2 As String
    myrange1 = A1
    myrange2 = a2

A1a2是变量。在下面的代码Range(myrange1).Select中,它们可能是字符串,只要您在此处提及" A1和A2中的范围分别为#34;。

因此,尝试这样的事情:

myrange1 = "A1"
myrange2 = "a2"

然后Range(myrange1).Select运行良好。

通常,请阅读这两个内容以使您的代码更好一些:

然后尝试重构整个代码。

答案 1 :(得分:0)

在A1中你有一个公式,可以创建字符串" X1:X2&#34 ;;在A2中你有一个公式,可以创建字符串" Y1:Y2"。

您希望以升序方式对X1:X2进行排序,然后按升序方式对范围Y1:Y2进行排序。

{
"extends": "airbnb",
"parser": "babel-eslint",  
"rules": {

    }
}
相关问题