如何在一行中找到值并使用VBA返回列号?

时间:2014-07-31 13:52:59

标签: excel vba excel-vba

除了每一行中有一个单元格外,我的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比较陌生,并且不知道我在做什么。抱歉我的英语不好(外国人)。我很感激任何帮助。谢谢!

3 个答案:

答案 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, ""), "$", "")

如果这是您希望函数返回的内容,则必须更改函数返回字符串的类型