选择A列时,在VBA中将Excel工作表中的行向上计数到数字

szqfcxe2  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(134)

我有一个有两列的表格。我需要从选定的单元格“金”开始计算向上的行数。

A       B
Names | Numbers 
-------------
2 Steve 109
3 John 107
4 Jerry 356
5 Julie Text
6 Chris Text
7 Doug Text
8 Kim Text
9 Mike 101

Doug是当前选中的单元格。如何使用goin up和IsNumeric()函数计算从Doug到Julie的行数,以便在第一个数字处停止,但只计算所有文本?注意:文本可以变化并且不一定都一样。2文本和的行数也会变化。3我只想计算文本的行数。

nnvyjq4y

nnvyjq4y1#

我认为下面的代码/宏应该能达到你想要的效果。它的工作原理和评论中karma的描述一样,我认为你是想用IsNumeric()和一个while循环向上循环。

Sub iterate_up()

    Dim row
    Dim textcount
    textcount = 0
    
    If ActiveCell.Column = 1 Then 'Check that the selected cell is in column A
        row = ActiveCell.row
        
        While (Not (IsNumeric(Cells(row, 2).Value)) And row > 1)
            textcount = textcount + 1
            row = row - 1
        Wend

        Range("C1").Value = textcount

    End If
 
End Sub

目前,它不检查所选单元格是否为空,也不将空单元格视为包含文本。后者可以通过将while循环的条件更改为While ((Not (IsNumeric(Cells(row, 2).Value)) Or IsEmpty(Cells(row, 2).Value)) And row > 1)来实现。类似地,要检查所选单元格是否为空,if语句将为If (ActiveCell.Column = 1 And Not(IsEmpty(ActiveCell.Value))) Then。此外,我不知道结果应该如何返回,所以我就把它放进了C1细胞。我希望这就是,你要找的。
编辑:如果您想选择B列中包含第一个数值的单元格,则必须在End If之前添加Cells(row, 1).Select

相关问题