Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Vba 在高级过滤器中使用间接过滤器_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 在高级过滤器中使用间接过滤器

Vba 在高级过滤器中使用间接过滤器,vba,excel,excel-formula,Vba,Excel,Excel Formula,你好,Stack Overflow社区 我目前正在创建一个自动报告,从给定文件夹导入两个或多个CSV文件。我需要用于VLOOKUP的唯一标识符位于一个模糊的列中,因此我需要做的是剪切并将找到的列插入到列“a”中。下面的例子 With wksRawData '~~> Move Process ID Column to Column 'A' for VLOOKUP .Columns(WorksheetFunction.Match("pid", .Range("1:1"), 0)

你好,Stack Overflow社区

我目前正在创建一个自动报告,从给定文件夹导入两个或多个CSV文件。我需要用于VLOOKUP的唯一标识符位于一个模糊的列中,因此我需要做的是剪切并将找到的列插入到列“a”中。下面的例子

With wksRawData
    '~~> Move Process ID Column to Column 'A' for VLOOKUP
    .Columns(WorksheetFunction.Match("pid", .Range("1:1"), 0)).Cut
    .Columns(1).Insert Shift:=xlToLeft

    '~~> Remove Additional Headers
    .Cells.RemoveDuplicates Columns:=Array(1)
End With
PID Whitelist  |      |  user  |  proc          |  PID Whitelisted?
---------------+------+--------+----------------+------------------
          182  |      |  root  |                |  < FORMULA_ABOVE >
           11  |      |  test  |                |  < FORMULA_ABOVE >
         1776  |      |        |  Jazzy Rabbit  |  < FORMULA_ABOVE >
这一部分非常有效,但我在另一个工作表中有一个公式,它应该引用$A2,它被更改为$B2。它应该引用$A2的原因是因为它正在高级过滤公式中使用,并且是第一个数据点。公式如下

=IF(COUNTIF($C:$C, 'Raw Data'!$A2)=0, TRUE, FALSE)
当与其他高级过滤器列一起使用时,此公式将列出任何手动添加的唯一标识符。下面的例子

With wksRawData
    '~~> Move Process ID Column to Column 'A' for VLOOKUP
    .Columns(WorksheetFunction.Match("pid", .Range("1:1"), 0)).Cut
    .Columns(1).Insert Shift:=xlToLeft

    '~~> Remove Additional Headers
    .Cells.RemoveDuplicates Columns:=Array(1)
End With
PID Whitelist  |      |  user  |  proc          |  PID Whitelisted?
---------------+------+--------+----------------+------------------
          182  |      |  root  |                |  < FORMULA_ABOVE >
           11  |      |  test  |                |  < FORMULA_ABOVE >
         1776  |      |        |  Jazzy Rabbit  |  < FORMULA_ABOVE >
我尝试使用间接、地址和索引来代替“原始数据”$A2,但由于它们引用绝对目的地,高级过滤器始终使用第一个唯一标识符值;而不是当前行的值

提前感谢您抽出时间,我非常感谢您提供的任何帮助

氮氧化物
我建议在VBA列插入后立即重写公式。改进公式示例:

With wksRawData
    '~~> Move Process ID Column to Column 'A' for VLOOKUP
    .Columns(WorksheetFunction.Match("pid", .Range("1:1"), 0)).Cut
    .Columns(1).Insert Shift:=xlToLeft

    '~~> Remove Additional Headers
    .Cells.RemoveDuplicates Columns:=Array(1)
End With
sheets("Some_Sheet").cells(x, y).formula = "=NOT(COUNTIF($C:$C, 'raw data'!$A2))"