在特定列Excel VBA中匹配函数
我正试图在VBA for Excel 2011中编写一个程序,该程序可以在一列(由另一个变量确定的列)中搜索数字1,以便它知道从何处开始迭代 假设列的编号由在特定列Excel VBA中匹配函数,vba,excel,match,worksheet-function,Vba,Excel,Match,Worksheet Function,我正试图在VBA for Excel 2011中编写一个程序,该程序可以在一列(由另一个变量确定的列)中搜索数字1,以便它知道从何处开始迭代 假设列的编号由colnumvar给出。我能想到的唯一方法是Match函数,这让我写了以下内容: Dim rowvar As Integer rowvar = WorksheetFunction.Match(1,Range(Cells(1,colnumvar),Cells(1000,colnumvar)),0) 然而,这给了我一个错误。在对它进行了更多的
colnumvar
给出。我能想到的唯一方法是Match函数,这让我写了以下内容:
Dim rowvar As Integer
rowvar = WorksheetFunction.Match(1,Range(Cells(1,colnumvar),Cells(1000,colnumvar)),0)
然而,这给了我一个错误。在对它进行了更多的研究之后,我意识到它不能接受
单元格([row],[col])
的操作方式,而是想要范围(“A1:A100”)
。不幸的是,我不能这样做,因为程序正在确定要查看哪一列。如果您能帮助我们解决这个问题,我们将不胜感激 你想做的是更好地提供服务
这个简单的函数返回了您找到的位置
Function rowvar(ByRef c As Integer) As Integer
Dim keySrc As Integer
keySrc = 22 'wath you want to find
rowvar = WorksheetFunction.Match(keySrc, Range(Cells(1, c), Cells(1000, c)), 0)
End Function
与rowvar(x)一起使用运行代码时,
colnumvar
的值是多少?它是一个值变化的整数。。。它总是1、3、5、7、9、11、13或15。关键是代码应该是健壮的,所以我不能告诉它该做什么,如果这有意义的话哈哈:请尝试将.address放在你的区域和单元格之后,这样你就可以确定你给出的是匹配函数的地址而不是值。我刚刚试过,它告诉我下面有语法错误:BorradorVar=WorksheetFunction.match(1,Sheets(“usarios”).range(cells(1,ColumnaNumVar,cells(1000,Columnumvar)).Address,0)
Columnumvar是我在上面写的Columnumvar
。您不认为找不到1,所以会出现错误吗?范围(单元格(),单元格())
是正确的语法。谢谢:D这很好,但我不得不将Dim ws as Sheet
更改为Dim ws as Sheet
,并且我去掉了第5行中的。
。但是除了那些琐碎的修饰,这段代码非常棒,再次感谢!@mataxu-我编写代码时没有Excel进行测试。修复了Sheet
->工作表
.Argument..
不是要一字不差地复制,而是要被任何适合你的东西所取代,最终什么都没有(参见链接文档)。哦,这很有道理!再次感谢:D它正是我想要的
Function rowvar(ByRef c As Integer) As Integer
Dim keySrc As Integer
keySrc = 22 'wath you want to find
rowvar = WorksheetFunction.Match(keySrc, Range(Cells(1, c), Cells(1000, c)), 0)
End Function