从行中查找匹配值Excel单元格

从行中查找匹配值Excel单元格,excel,vbscript,vba,Excel,Vbscript,Vba,这是一个Excel问题。 我有一个包含以下值的Excel行: cell value 1, 2, x, ,1=,2=, ,x=,2 cell address a1,b1,c1,d1,e1,f1,g1,h1,i1 单元格值1,2,x,,1=,2=,x=,2 小区地址a1、b1、c1、d1、e1、f1、g1、h1、i1 我想从上面的行中获取所有非空单元格地址 i.e. a1,b1,c1,e1,f1,h1,i1 即 a1、b1、c1、e1、f1、h1、i1 是否可以使用vba/vbs来

这是一个Excel问题。 我有一个包含以下值的Excel行:

cell value 1, 2, x, ,1=,2=, ,x=,2 cell address a1,b1,c1,d1,e1,f1,g1,h1,i1 单元格值1,2,x,,1=,2=,x=,2 小区地址a1、b1、c1、d1、e1、f1、g1、h1、i1 我想从上面的行中获取所有非空单元格地址

i.e. a1,b1,c1,e1,f1,h1,i1 即 a1、b1、c1、e1、f1、h1、i1 是否可以使用vba/vbs来完成这项工作


非常感谢

您可以使用
.SpecialCells(xlCellTypeConstants)

要演示,请运行此操作,并在iMedia窗口中观察结果

Sub demo()
    Dim rng As Range, rNonEmpty As Range
    Set rng = [A1:I1]
    Set rNonEmpty = rng.SpecialCells(xlCellTypeConstants)

    Debug.Print rNonEmpty.Address
End Sub

以下代码将检查10行乘1000列的区域,最后将显示单元格A20中非空白单元格的地址:

Sub no_blank_cells()
   Dim wks As Worksheet
   Set wks = ActiveSheet
   m = ""
   maxrows = 10
   maxcolumns = 1000
   For i = 1 To maxrows
       For j = 1 To maxcolumns
           a = Cells(i, j)
           If a <> "" Then
               m = m & Cells(i, j).Address(RowAbsolute:=False, ColumnAbsolute:=False) & ", "
           End If
       Next j
   Next i
   msg = MsgBox(m, vbInformation)
   wks.Cells(20, 1) = m
End Sub
子编号空白单元格()
将工作作为工作表
设置wks=ActiveSheet
m=“”
maxrows=10
maxcolumns=1000
对于i=1到maxrows
对于j=1到maxcolumns
a=单元(i,j)
如果是“”,那么
m=m&单元格(i,j).地址(行绝对值=False,列绝对值=False)&“
如果结束
下一个j
接下来我
msg=MsgBox(m,vbInformation)
wks.细胞(20,1)=m
端接头
如果要更改要搜索的区域,请修改变量的值
Sub WriteNonNulValue()
    '/*SELECT SHEET TO ANALIZE*/
    Worksheets("Sheet1").Select
    '/*SELECT ROW TO READ*/
    Row_to_read = 1
    '/*SELECT ROW IN WHICH WRITE*/
    Row_to_write = 2
    '/*NUMBER OF COLUMNS TO ANALIZE*/
    Columns_to_analize = 11
    '/*COUNTER WRITE*/
    Columns_to_write = 1
    For i = 1 To Columns_to_analize
        If Trim(Cells(Row_to_read, i)) <> "" Then
            '/*WRITE ADDRESS NO EMPTY CELLS*/
            Cells(Row_to_write, Columns_to_write) = Cells(Row_to_read,i).Address
            '/*INCREMENT COUNTER WRITE*/
            Columns_to_write = Columns_to_write + 1
        End If
    Next i
End Sub
'/*选择要分析的图纸*/ 工作表(“表1”)。选择 '/*选择要读取的行*/ 行到读取=1 '/*选择要写入的行*/ 行到写入=2 “/*要分析的列数*/ 列到列分析=11 '/*计数器写入*/ 列到写入=1 对于i=1到列\u到\u分析 如果Trim(单元格(第_行至第_行,i))为“”,则 “/*写入地址无空单元格*/ 单元格(行写入,列写入)=单元格(行读取,i)。地址 '/*递增计数器写入*/ 列写入=列写入+1 如果结束 接下来我 端接头
“我想得到”——这是什么意思?到目前为止你的代码是什么?你被困在哪里?此网站不是代码创建服务。很乐意帮忙,但你需要展示你自己的努力。我建议使用一个循环来检查A1:I1范围,并将结果写入数组。我使用for循环来检查每个单元格,以及搜索速度。太慢了。