【问题标题】:Search through the column by integer retrieves no values按整数搜索列不检索任何值
【发布时间】:2016-06-04 12:34:39
【问题描述】:

我已经制作了 3 个这样的搜索框,它们在我搜索时检索值。只有当我使用文本时,才会检索值。每当我使用数字时,该列都不会检索任何值。最好的方法是文本框可以同时搜索文本和整数。

我觉得应该和格式有关,我已经通过“选择列,右键单击列,选择格式单元格,更改为文本”更改了列的格式。但这没有用..

这是我按数字搜索之前的样子。

这是我输入数字时的样子。

这是我一直在使用的 VBA 代码,正如我提到的,当我按文本​​而不是数字搜索时它可以工作..

Private Sub TextBox3_Change()
        Sheet1.Range("A2:CM" & Rows.Count).AutoFilter Field:=3, Criteria1:="*" & TextBox3.Value & "*"
End Sub

【问题讨论】:

标签: excel vba format cells


【解决方案1】:

您的标准是一个文本过滤器;它不会检测数据中的数字,除非数字作为文本输入。更改单元格的numberformat 不会将作为数字输入的值更改为文本。它们需要作为文本重新输入。这可以通过编程方式完成;通过在数字前加上单引号,或在输入数值之前将列格式化为文本。

您也可以运行过滤器两次——首先使用文本过滤器,然后使用数字过滤器。

或者,正如@Ralph 在下面的 cmets 中指出的那样,您还可以通过 TEXT 函数使用辅助列将数字数据转换为文本,然后对该列进行过滤。

执行此操作的最佳方法可能取决于您的最终目标。

【讨论】:

  • 虽然我强烈建议 not 将数字(尤其是在 Excel 文件中)转换为文本,但您(不幸的是)是正确的。就个人而言,我宁愿建议使用以下任何一种:stackoverflow.com/a/20376386/1153513
  • @Ralph 是的,辅助列也可以。但是,正如我所写,完成任务的最佳方式取决于未提供的信息。我会将您的建议添加到我的答案中。谢谢。
  • 包含 7 行 VBA 代码。如果 OP 将这些内容包含在他现有的 VBA 代码中(而不是使用 AutoFilter),那么该案例将被关闭并解决。
  • @Ralph 再次,没有足够的信息。例如,该代码在小型数据库中可能没问题,而在大型数据库中速度非常慢。
【解决方案2】:

使用 OP 的屏幕截图中显示的“数字”类型,可能的解决方案如下:

Private Sub TextBox3_Change()
    Dim criteria As String
    With TextBox3
        If IsNumeric(.Value) Then
            criteria = .Value
        Else
            criteria = "*" & .Value & "*"
        End If
    End With
    Sheet1.Range("A2:CM" & Rows.Count).AutoFilter Field:=3, Criteria1:=criteria
End Sub

【讨论】:

  • @DlerAri 你经历过吗?
  • @DlerAri 很高兴向尝试帮助您的人提供反馈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多