Excel VBA - 使用数组,空格和逗号进行过滤

时间:2015-05-10 17:19:18

标签: arrays excel vba excel-vba

我在Excel VBA中遇到自动过滤问题。我需要过滤包含文本的单元格列以显示“IT”的实例,但不包含包含字母“it”的单词 - 即我想过滤包含“Commercial,IT”但不包含“Commercial,Committee”的单元格。< / p>

我正按照这个问题使用数组:Use autofilter on more than 2 criteria

我使用此代码时可以使用:

Worksheets("AssembledData").Range("A1").AutoFilter _
    field:=NewTeamCol, _
    Criteria1:=Array("IT", "IT, *"), _
    Operator:=xlFilterValues

但是如果我在数组中添加第3个选项来捕获IT位于字符串Criteria1:=Array("IT", "IT, *", "* IT"), _末尾的单元格,我得到的结果就像我刚才Criteria1:=Array("IT"), _

一样

我做错了什么?这里是新的,也是VBA的新手 - 尽我所能搜索而不是问这个项目,但现在难倒了!提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试省略Operator:=xlFilterValues

由于您使用通配符和xlFilterValues,Excel似乎比较字面ITIT, ** IT而不是使用通配符*

例如,请使用此数据集:

   Name
1  john
2  nathjohn
3  test
4  abletest
5  testing
6  Commercial, IT
7  Commercial, Committee
8  IT, *

使用:

ActiveSheet.Range("$A$1:$A$15").AutoFilter _
        Field:=1, _
        Criteria1:=Array("IT", "IT, *", "* IT")

会产生Commercial, IT,因为正确使用条件的通配符,但不选择IT, *。由于这种价值不是你当前的问题,我们现在可以方便地跳过这个角落。

使用:

ActiveSheet.Range("$A$1:$A$15").AutoFilter _
    Field:=1, _
    Criteria1:=Array("IT", "IT, *", "* IT"), _
    Operator:=xlFilterValues

结果为IT, *,因为xlFilterValues使用的是IT, *的字面值。

试一试,看看事情是如何运作的。

答案 1 :(得分:0)

您可以随时“手动过滤:”

{"result":{"text":"ABC","leaf":false,"expanded":true,"children":[{"text":"Dashboard","leaf":false,"expanded":false},{"text":"Report","leaf":false,"expanded":false},{"text":"Chart","leaf":false,"expanded":false}]}}

var model=Ext.define('TreeModel',{
        extend:'Ext.data.Model',
        fields:[{
            name:'text',
            type:'string'
        },
        {
            name:'leaf',
            type:'boolean'
        },
        {
            name:'expanded',
            type:'boolean'
        }],
         proxy: {
                type: 'ajax',
                url: 'FetchTreeChidren',
                reader: {
                    type: 'json',
                    root: 'result'
                }
         }
    });

    var store = Ext.create('Ext.data.TreeStore', {
        model:model 

    });

    Ext.Ajax.request({
        url: 'FetchTreeChidren',
        params: {
           level:'level1'
        },
        async:false,
        success: function(response){
            var treejson = Ext.JSON.decode(response.responseText);
            store.setRootNode(treejson);


        }
    });
    var lefttree=Ext.create('Ext.tree.Panel', {
        region:'west',
        height:screen.height-150,
        title: 'Simple Tree',
        width: 200,
        height: 150,
        store: store,
        rootVisible: false,
        renderTo: Ext.getBody()
    });
    return lefttree;