【问题标题】:How to search a sheet for a word or phrase?如何在工作表中搜索单词或短语?
【发布时间】:2013-08-21 15:09:28
【问题描述】:

我正在编写宏来搜索短语,选择右侧的单元格,复制,选择第 2 页,然后粘贴到那里的静态单元格。该宏用于在 Excel 电子表格上组织餐厅销售报告。

我是编程新手,没有使用 VBA 的经验。

我不知道如何在工作表中搜索单词或短语。

【问题讨论】:

  • 看看VLOOKUP函数,不需要宏:stackoverflow.com/questions/18314053/…
  • 在找到信息时记录宏,Ctrl+f,记住选项,然后使用 activecell.offset 获取数据。
  • 我忘了指出,由于每周的变化,生成的销售报告的结构并不总是相同。因此,我认为通过点击记录宏或依赖行/列号是行不通的。这就是为什么我认为搜索功能是我唯一的选择。

标签: excel vba


【解决方案1】:

有很多方法可以找到一个单元格,这取决于你要做什么。

要完全按照您的描述进行操作,您将使用Range.Find 方法。

Range.Find 的示例

在新的工作簿中,我在随机单元格中写下诸如猫和狗之类的单词。

然后我创建一个带有公共子的新模块:

Public Sub TestFind()
  Sheet1.Cells _
    .Find("cat", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) _
    .Offset(-1, 1) _
    .Copy Sheet2.[A1]
End Sub

好的,解释一下。如果您不熟悉,在 VBA 中您可以使用我在上面使用过的named and optional arguments。我也用过一些line continuations or as microsoft calls them "line breaks"

Sheet1.Cells 在 Sheet1 上,我正在获取单元格范围(所有单元格)并调用该范围的 Find 方法。

.Find 返回单元格中任何位置包含单词 cat 的第一个范围(由于 MatchCase:=False,大小写无关紧要,LookAt:=xlPart 表示单元格内容的任何部分,其中 LookAt:=xlWhole 表示整个单元格)。

.Offset(-1,1) 表示将范围或单元格向上移一个,在找到的单元格右侧移一个。

.Copy Sheet2.[A1] .[A1] 语法与写 .Range("A1") 相同。我希望这个副本声明的作用很明显。

其他方法

您还可以考虑执行类似于 VLOOKUP 或 INDEX 和 MATCH 的操作。或者也许使用排序或过滤接口之一。这取决于您的工作簿的结构以及您想要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2015-08-28
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多