非空单元格的查找值

时间:2018-03-09 22:56:40

标签: excel excel-formula

ColA     ColB   ColC ColD
akhil    cha    sam  rush
34               28

我想提取与非空单元格对应的值。这里非空单元格包含34和28值。 所以,Formula应该理想地提取akhil和sam。

1 个答案:

答案 0 :(得分:0)

使用.offset方法获取非空单元格上方的单元格内容。我不知道您的代码,但是假设您将值放在一个数组中,然后您将使用" for ...每个"循环检查您正在检查的单元格。循环,每次找到非空单元格时,使用.offset(-1,0).value(或.text)获取非空单元格上方单元格的内容。然后你需要推进一个计数器,以便下次找到非空单元格时,非空单元格上方单元格的内容将存储在数组中的下一个可用地址中。

如果使用数组,则还需要阅读Redim命令以在开始在其中存储数据之前调整数组的大小。你将需要至少两个循环,一个for ...每个循环来计算非空单元格的数量,以便你可以调整数组的大小,以及...每个循环来运行单元格并获取上面的数据非空单元格。

这是一个使用从D10到H10的小范围的示例,它可以满足您的要求,只需在即时框中显示结果。你可以用它做你想做的事。

Sub getdata()

Dim myrange As Range
Dim c As Range
Dim names() As String
Dim a As Long
Dim b As Long

Set myrange = ActiveSheet.Range("D10:H10")
a = 0

For Each c In myrange
    If Not c.Value = "" Then a = a + 1
Next c

ReDim names(0 To a - 1)
b = 0
For Each c In myrange
    If Not c.Value = "" Then
        names(b) = c.Offset(-1, 0).Text
        b = b + 1
    End If
Next c

For b = 0 To a - 1
Debug.Print names(b)
Next b

End Sub