Excel 使用“查找”查找行中的特定文本,然后在满足特定条件的情况下从下面的行中提取数据

Excel 使用“查找”查找行中的特定文本,然后在满足特定条件的情况下从下面的行中提取数据,excel,vba,find,Excel,Vba,Find,我有一些VBA的开始,它就快到了 我想从第一行开始,在许多列中找到一个词,“基金”。如果单元格中包含“Fund”,则转到该列中任何包含“1”的单元格,并从同一行的+1和+5单元格中提取数据 它适用于唯一的列名,例如,如果我将代码更改为Fund1,将单元格Q1更改为Fund1,它就可以工作。但不适用于包含“基金”的多个单元格 我需要建立一个循环,这样它在第一次看到“基金”这个词时就可以继续找到它 Sub consolidate() Dim FindRow As Range Dim rowloc

我有一些VBA的开始,它就快到了

我想从第一行开始,在许多列中找到一个词,“基金”。如果单元格中包含“Fund”,则转到该列中任何包含“1”的单元格,并从同一行的+1和+5单元格中提取数据

它适用于唯一的列名,例如,如果我将代码更改为Fund1,将单元格Q1更改为Fund1,它就可以工作。但不适用于包含“基金”的多个单元格

我需要建立一个循环,这样它在第一次看到“基金”这个词时就可以继续找到它

Sub consolidate()

Dim FindRow As Range
Dim rowloc As Integer
Dim c As Object
Dim fundrow As Integer
Dim count As Integer
count = 1
fundrow = 1
Dim isin As String
Dim weight As String
Set Sht = ActiveWorkbook.Worksheets("LM Holdings")


Sht.Range("A:B").ClearContents

            Sht.Activate
            Set c = Sht.Rows(1).Find(What:="Fund", LookIn:=xlValues)
            If Not c Is Nothing Then
                Set FindRow = Sht.Rows(1).Find(What:="Fund", LookIn:=xlValues)
                rowloc = FindRow.Column
                Do Until count = 10
                    If Cells(count, rowloc).Value = "1" Then
                        isin = Cells(count, rowloc + 1).Value
                        weight = Cells(count, rowloc + 5).Value
                        Sht.Activate
                        Cells(fundrow, 1).Value = isin
                        Cells(fundrow, 2).Value = weight
                        fundrow = fundrow + 1
                    End If
                        count = count + 1
                    Loop



                     End If


                     End Sub

您还需要,我认为第一行的范围通常会被称为
行(1)
,因此它可以是,
设置c=ActiveSheet.Rows(1)。Find(What:=“Fund”,LookIn:=xlValues)
,也可以是指像
单元格(行,列)
这样的单元格,它们总是作为ActiveSheet上的单元格。创建一个绑定到工作表的变量并引用带有
单元格的变量(…
如下所示:
Set Sht=ActiveWorkbook.Worksheets(“LM Holdings”)
然后引用该工作表上的单元格将是
Sht.Cells(行、列)
。这就是避免
的方法。正如@Cyril所指出的,也可以选择
。也可以通过在第1行中找到最后使用的列来实现,并将其保存为一个范围,然后通过
对范围中的每个单元格进行整个范围的检查,找到所有带有
“Fund”
的单元格被称为“LM Holdings”您正在处理的唯一工作表?单元格不是由第二个工作表上的DealingToolRow定义的吗?