Vba 查找方法的问题

Vba 查找方法的问题,vba,excel,csv,Vba,Excel,Csv,我有一个由unix程序导出的大型CSV文件,这与我在5月29日询问的文件不同。它包含多个垂直堆叠的大数据组,并由一行间距分隔,即A1:J4098 is传感器1、A4100:J8197 is传感器2等。。每组的第一行是传感器的名称。我正在尝试编写一个宏,它将在CSV中搜索特定的传感器名称,创建指向该组的命名范围,并对其进行自动筛选注意:传感器、参数和Parm在我们的办公室中是同义词 以下是我正在使用的代码: Set sData = Activeworkbook.Sheets(1)

我有一个由unix程序导出的大型CSV文件,这与我在5月29日询问的文件不同。它包含多个垂直堆叠的大数据组,并由一行间距分隔,即A1:J4098 is传感器1、A4100:J8197 is传感器2等。。每组的第一行是传感器的名称。我正在尝试编写一个宏,它将在CSV中搜索特定的传感器名称,创建指向该组的命名范围,并对其进行自动筛选注意:传感器、参数和Parm在我们的办公室中是同义词

以下是我正在使用的代码:

    Set sData = Activeworkbook.Sheets(1)
    Set Generator = ThisWorkbook
    Set Dashboard = Generator.Sheets("Dashboard")

'Set range for .Find
    Set rSensor = sData.Range("J1000000")
    Set rSensor = Range("A18", rSensor.End(xlUp))

'Check if tab already exists and create it if not
    For parm = 3 To 23
        If IsEmpty(Dashboard.Cells(parm, 1)) Then Exit For
        Sensor = Dashboard.Cells(parm, 1)
        Exist = False
        For Each ws In Generator.Worksheets
            If Sensor = ws.Name Then
                Exist = True
                Set NewWS = Generator.Sheets(ws.Name)
                Exit For
            End If
        Next ws

        If Exist = False Then
            Generator.Worksheets("Fband").Copy Before:=Generator.Sheets("Scaled Data")
            Set NewWS = Generator.Worksheets("Fband (2)")
            NewWS.Name = Sensor
        End If

    'Find sensor name in data; set range if found, msgbox if not
' ! Always goes to first sensor in raw data
        With rSensor
            Set c = .Find(Sensor, , xlValues)
            If c Is Nothing Then
                MsgBox ("Parameter Not Found:" & Sensor)
                End
            Else
                Set rData = sData.Cells(c.Row + 1, 1)
                Set rData = Range(rData, rData.End(xlDown))
                Set rData = Range(rData, rData.End(xlToRight))

            'Pull peak amplitude for each frequency band
                For Band = 1 To 136
                    rData.AutoFilter Field:=1, Criteria1:=">" & NewWS.Range("A1").Offset(Band, 1), _
                        Criteria2:="<" & NewWS.Range("A1").Offset(Band, 3)
                    sData.AutoFilter.Sort.SortFields.Clear
                    sData.AutoFilter.Sort.SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, _
                        Order:=xlDescending, DataOption:=xlSortNormal
                    With sData.AutoFilter.Sort
                        .Header = xlYes
                        .MatchCase = False
                        .Orientation = xlTopToBottom
                        .SortMethod = xlPinYin
                        .Apply
                    End With

                'Replace existing data if greater
                    Set rNew = sData.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 2)
                    If NewWS.Range("A1").Offset(Band, 4).value < rNew.value Then
                        rNew.Copy
                        NewWS.Range("A1").Offset(Band, 4).PasteSpecial xlPasteValues
                    End If

                    rData.AutoFilter Field:=1
                Next Band
            End If
        End With

问题是宏返回的数据集与我列表中每个传感器的第一组数据集相同[在Dashboard.RangeA3:A23中找到]。我假设Find函数正在工作,因为我从未获得参数not found消息框,但它每次都将自动筛选放在同一组数据上,而不是传感器名称后面的一组数据。

是否调试。打印rData.Address?我使用了Msgbox rData.Address,它显示范围随着每次迭代而移动。但无论出于何种原因,自动过滤器都将保持不变,而不是应用于新范围。也许如果我在循环结束时关闭AutoFilterMode…是的。成功了!