在不同的列上使用不同的过滤器谷歌脚本



我正在寻找一种方法,对已经过滤的数据应用过滤器。

我只是试了一下,但我在边界上犯了一个错误。


var i = 5;
var jour = "26/05/2020";
while(i>0){
k = 0;
var filter1 = SpreadSheetApp.newFilterCriteria().whenDateEqualTo(jour).build();
sheet.getRange("F:F").createFilter();
sheet..getFilter().setColumnFilterCriteria(6,filter1);
for (var kk = 1 ; kk < 3; kk++){
if (kk = 1) k2 = 2;
if (kk = 2) k2 = 1;
if (kk = 3) k2 = 5;
var filter2 = SpreadSheetApp.newFilterCriteria().whenNumber(k2).build();
sheet.getFilter().setColumnFilterCriteria(2,filter2);
[...]
}
}

我刚刚在VBA中看到了这一点,比如:

k1 = 0
For kk = 1 To 3
If kk = 1 Then k2 = 2
If kk = 2 Then k2 = 1
If kk = 3 Then k2 = 5
Selection.AutoFilter Field:=2, Criteria1:="=" & k2
If Cells(1, col + 2).Value = Cells(1, col + 3).Value And _
Cells(1, col + 3).Value > 0 And Cells(1, col + 4).Value > 400 Then
If jj = 1 Then
Cells(jj, col + 4 + 1).Value = "Field1"
Cells(jj, col + 4 + 2).Value = "Field2"
Cells(jj, col + 4 + 3).Value = "Field3"
End If
If k1 = 0 Then
k1 = 1
jj = jj + 1
End If
Cells(jj, col + 4 + kk).Value = jour
End If

如果有人能帮我找到一种方法来得到我想要的东西,那将是非常好和有用的!提前感谢

真诚,

BigBenne

您确定需要将新条件应用于循环中的过滤器吗?

for (var kk = 1 ; kk < 3; kk++){
if (kk = 1) k2 = 2;
if (kk = 2) k2 = 1;
if (kk = 3) k2 = 5;
var filter2 = SpreadSheetApp.newFilterCriteria().whenNumber(k2).build();
sheet.getFilter().setColumnFilterCriteria(2,filter2);
[...]
}

也许你需要将最后一行转移到循环之外:

for (var kk = 1 ; kk < 3; kk++){
if (kk = 1) k2 = 2;
if (kk = 2) k2 = 1;
if (kk = 3) k2 = 5;
}
var filter2 = SpreadSheetApp.newFilterCriteria().whenNumber(k2).build();
sheet.getFilter().setColumnFilterCriteria(2,filter2);
[...]

最新更新