Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 非空单元格的查找值_Excel_Excel Formula - Fatal编程技术网

Excel 非空单元格的查找值

Excel 非空单元格的查找值,excel,excel-formula,Excel,Excel Formula,我想提取对应于非空单元格的值。此处非空单元格包含34和28值。 因此,公式应该理想地提取akhil和sam。使用.offset方法获取非空单元格上方单元格的内容。我不知道您的代码,但假设您将值放入数组中,然后使用“for…each”循环检查单元格,每次它找到非空单元格时,使用.offset(-1,0).value(或.text)获取非空单元格上方单元格的内容。然后,您需要将计数器前移,以便下次它找到非空单元格时,非空单元格上方的单元格内容将存储在数组中的下一个可用地址中 如果使用阵列,则在开始在

我想提取对应于非空单元格的值。此处非空单元格包含34和28值。
因此,公式应该理想地提取akhil和sam。

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

如果使用阵列,则在开始在阵列中存储数据之前,还需要读取Redim命令以调整阵列的大小。您将需要至少两个循环,一个用于。。。每个循环用于计算非空单元格的数量,以便调整数组的大小,以及用于。。。每个循环都要遍历单元格并获取非空单元格上方的数据

下面是一个示例,它使用从D10到H10的一个小范围来执行您的请求,并且只在即时框中显示结果。你可以用它做你想做的事

ColA     ColB   ColC ColD
akhil    cha    sam  rush
34               28
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