【问题标题】:how to set a range by the column header如何通过列标题设置范围
【发布时间】:2019-09-13 16:07:43
【问题描述】:

我有一个 VBA 代码可以使用 v-lookup 进行比较。我正在通过 A2/B2 或类似的东西声明范围 我想通过列标题声明范围,因为这些标题是静态的,但是对于每张纸,这些列都会重新排列

Dim PLACE_OF_SERVICE As String
Dim SERVICE_CODE As String
Dim DIAGNOSIS_CODE As String
Dim REVENUE_CODE As String
Dim NDC_CODE As String
Application.Worksheets("Data").Range("O1") = "Observation"
Application.Worksheets("Data").Range("O2").Formula = "=IF(OR(ISNA(VLOOKUP(Range(SERVICE_CODE)),Valuesets!$A$2:$A$5,1,FALSE))=FALSE),""Yes"",""No"")"
Application.Worksheets("Data").Range("O2").AutoFill Destination:=Application.Worksheets("Data").Range("O2:O" & last)

实际公式是 IF(OR(ISNA(VLOOKUP(F2,Sheet2!$A$2:$A$5,1,FALSE))=FALSE),"是","否") 但我想通过替换 F2 来用列标题写它

【问题讨论】:

  • 您可以使用FindApplication.Match 获取标头所在的范围。
  • 我是编码新手,我只是试了一下....你能帮帮我吗
  • 如果您将数据格式化为表格 (Ctrl+T),那么您可以在公式中使用标题,这是另一种选择。

标签: excel vba excel-formula


【解决方案1】:

试试这个:(您需要自定义它,因为我们只能从您的代码中推断出 F2 是“SERVICE_CODE”)

Dim PLACE_OF_SERVICE As String
Dim SERVICE_CODE As String
Dim DIAGNOSIS_CODE As String
Dim REVENUE_CODE As String
Dim NDC_CODE As String

Range ("??").Name = "PLACE_OF_SERVICE" 'Replace ?? by PLACE_OF_SERVICE Range
Range ("F2").Name = "SERVICE_CODE"
Range ("??").Name = "DIAGNOSIS_CODE" 'Replace ?? by DIAGNOSIS_CODE Range
Range ("??").Name = "REVENUE_CODE" 'Replace ?? by REVENUE_CODE Range
Range ("??").Name = "NDC_CODE" 'Replace ?? by NDC_CODE Range

With Application.Worksheets("Data")
    .Range("O1") = "Observation"
    .Range("O2").Formula = "=IF(OR(ISNA(VLOOKUP(SERVICE_CODE, _
                    Valuesets!$A$2:$A$5,1,FALSE))=FALSE),""Yes"",""No"")"
    .Range("O2").AutoFill Destination:= .Range("O2:O" & last)
End With

无论如何,此代码将根据您在 F2 单元格上的值进行查找,例如,另一个主题是您是否尝试在一列而不是一个单元格上查找项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多