【问题标题】:Field based off of a Cell value基于单元格值的字段
【发布时间】:2019-07-19 14:08:11
【问题描述】:

我需要的是 VBA 中自动过滤器的变量字段

因此,我目前正在构建一个基于数据的数据,其中包括他们需要的几项业务和培训。我正在尝试创建一个宏,该宏将基于特定单元格来确定要排序的列,然后在排序后复制范围。我最初打算为每个企业做一个按钮,但这将包括 60 多个按钮,因为有 60 行。下面是一个单一业务的代码,我需要的是基于单元格范围 B85 的自动过滤字段

Sub SMBstj()
'
' SMBstj Macro
'

'
Application.ScreenUpdating = False
Sheets("Training Data").Select
ActiveSheet.Range("$A$2:$CF$116").AutoFilter Field:=8, Criteria1:="<>"
Range("A3:G3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Report").Select
Range("C85").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,   SkipBlanks _
    :=False, Transpose:=False
Sheets("Training Data").Select
Range("I2").Select
ActiveSheet.Range("$A$2:$CF$116").AutoFilter Field:=8
Sheets("Report").Select
Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • Criteria1:= Cells(85,2).Value 这不起作用?

标签: excel vba


【解决方案1】:

为了在第二行中查找字段值,您需要使用以下代码:

Dim strField As String

With Sheets("Training Data")
    strField = Application.Match(.Range("B85").Value, .Range("2:2"), 0)
    .Range("$A$2:$CF$116").AutoFilter Field:=strField, Criteria1:="<>"
End With

示例输出:

编辑:

如果 B85 单元格在另一个工作表中,则需要更新代码如下:

Match(Sheets("Other Sheet").Range("B85").Value ...

待测试:

Dim varField            As Variant

With Sheets("Training Data")
    varField = Application.Match(Sheets("Other Sheet").Range("B85").Value, .Range("2:2"), 0)
    If IsNumeric(varField) Then
        Call .Range("$A$2:$CF$116").AutoFilter(Field:=varField, Criteria1:="<>")
    Else
        Call MsgBox(Prompt:=Sheets("Other Sheet").Range("B85").Value & " not found!", Buttons:=vbExclamation + vbOKOnly, Title:="Error")
    End If
End With

【讨论】:

  • 那不是还在查看字段 8 吗?
  • 我真的需要它来根据单元格 B85 找出要查看的字段,所以假设我在单元格 B85 中有“Sol85”,我需要从字段 33 中自动过滤,但是如果“Sol84 " 在单元格 B85 中,我需要它从字段 32 中自动过滤。
  • 呃,对不起,我的错 - 我刚刚意识到你要求I am trying to create a macro that will go based of a specific cell to figure out which column to sort。让我编辑我的原始帖子。
  • 它给了我一个“运行时错误 9”下标超出范围。我想知道这是否是因为数据与我需要它作为搜索基础的单元格位于不同的工作表中。
  • 猜对了!我现在正在更新我的答案以包含另一张表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多