【问题标题】:MS Excel VBA Macro Dynamic RangeMS Excel VBA 宏动态范围
【发布时间】:2015-09-11 13:11:58
【问题描述】:

这是一个表格示例(带有令人毛骨悚然的示例数据)

|Col A |Col B |Col C |Col D |Col E
+------------+----------+--------+----------+-----
|数字 |值 |X |日期 |十进制
|1 | AA|X |2012/01/01|.1
|2 | BB|X |2012/02/01|.2
|3 |抄送|X |2012/03/01|.3
|4 | DD|X |2012/04/01|.4
|5 | EE|X |2012/05/01|.5

需要做什么:

  • 根据宏中的“值”(在本例中为 Col B)对表格进行排序

条件:

  • 标题值不会改变
  • 我必须搜索包含单词“Value”的标题,因为它从 Col C 更改为 Col D 或 Col A...B...E...
  • 列标题始终位于第一行

到目前为止我做了什么:

  • 暴力破解值...(糟糕!)
  • 搜索标题以查找包含标题“值”的列
  • 获取列字母/数字并存储在变量中

问题:

  • 使用列字母或数字作为排序的基础。 (即范围(colLetter & ":" & colLetter))

如有任何帮助,将不胜感激

【问题讨论】:

    标签: excel vba dynamic range


    【解决方案1】:
    Sub Tester()
    
    Const SORT_HEADER As String = "Value"
    Dim sht As Worksheet, f As Range
    
    
        Set sht = Worksheets("Sheet1")
    
        Set f = sht.Rows(1).Find(SORT_HEADER, LookIn:=xlValues, lookat:=xlWhole)
    
        If Not f Is Nothing Then
    
            sht.Range("A1").CurrentRegion.Sort _
                Key1:=sht.Columns(f.Column), Order1:=xlAscending, Header:=xlYes
    
        Else
            MsgBox "'" & SORT_HEADER & "' column not found!"
        End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 1970-01-01
      • 2016-08-30
      • 2015-07-18
      • 1970-01-01
      • 2018-04-28
      • 2020-07-21
      • 2014-03-04
      • 2018-05-07
      相关资源
      最近更新 更多