用于按名称查找单元格的Excel宏

时间:2013-08-21 15:09:29

标签: excel vba excel-vba

我是编程新手,没有VBA经验,但我的兼职工作要求我编写一个简单的Excel宏。我已经能够将一些宏拼凑在一起但是,我无法弄清楚如何在一张纸上搜索一个单词或短语。如果有人可以帮助我发现如何做到这一点或类似的东西我会非常感激! :3

作为参考,我正在编写宏来搜索短语,选择右侧的单元格,复制,选择第2页,然后粘贴到那里的静态单元格。该宏用于快速组织生成并报告给Excel电子表格的餐馆销售报告。也许有一种更简单的方法来做我想做的事情,如果是这样,我会非常感谢你的帮助。 :3

1 个答案:

答案 0 :(得分:2)

有很多方法可以找到一个细胞,这取决于你想要做什么。

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

Range.Find

的示例

在新的练习册中,我在随机单元格中写下了猫和狗等词。

然后我创建一个带有public sub的新模块:

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上我正在使用Cells范围(所有单元格)并调用该范围的Find方法。

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

.Offset(-1,1)表示将范围或单元格放在找到的单元格的上方和右侧。

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

其他方法

您还可以查看类似于VLOOKUP或INDEX和MATCH的操作。或者可以使用排序或过滤器接口之一。这取决于您的工作簿的结构以及您想要做的事情。