除了每一行中有一个单元格外,我的excel表格中都填充了零 我想找到那个单元并返回列 例如:在单元格中,T616是0以外的值。可以是-15400 我想找到基于行(616)的单元格(T616)并返回列(T)。可能它甚至在MsgBox中 这是我多次尝试和长期Google会话的结果:
Public Function find_Column(lRange As Range, lValue As String) As Integer
Dim vCell As Range
For Each vCell In lRange.Cells
If vCell.Value = lValue Then
find_Column = vCell.Column
MsgBox (find_Column)
Exit Function
End If
Next vCell
End Function
我在某个地方发现了这个代码并对其进行了一些修改,但我无法记住它在哪里。所以感谢创作者!
如何搜索0以外的数字?
我对VBA比较陌生,并且不知道我在做什么。抱歉我的英语不好(外国人)。我很感激任何帮助。谢谢!
答案 0 :(得分:1)
试试这个:
Public Function findNonZeroValueInColumn(lRange As Range) As Integer
Dim vCell As Range
For Each vCell In lRange.Cells
If vCell.Value <> 0 Then
find_Column = vCell.Column
Exit Function
End If
Next vCell
End Function
Sub ShowValue()
call MsgBox(findNonZeroValueInColumn(Range("A:A")))
End Sub
请记住,函数应该返回值。子(程序)不返回值。
答案 1 :(得分:0)
<>
符号是&#34;不等于&#34;比较。因此,如果你想检查一个单元格是否不等于0,你会写
If vCell.Value <> 0 Then
... ' rest of code here
在您的问题中:
Public Function find_Column(lRange As Range) As Integer
Dim vCell As Range
For Each vCell In lRange.Cells
If vCell.Value <> 0 Then
find_Column = vCell.Column
MsgBox (find_Column)
Exit Function
End If
Next vCell
End Function
此外,由于您只是检查0,因此您不需要额外的lValue As String
参数。
答案 2 :(得分:0)
由于您在输入时已回答了问题的其他部分,如果您想要返回列号而不是数字...
find_Column = Replace(Replace(vCell.Address, vCell.Row, ""), "$", "")
如果这是您希望函数返回的内容,则必须更改函数返回字符串的类型