使用自动筛选模式时,将列中的值获取到数组中,然后匹配该数组以删除行

时间:2018-08-13 17:43:57

标签: excel vba excel-vba

我正在尝试将D列中的值另存为数组,以便在删除自动过滤器后检查与D列中的数组匹配的内容并删除这些行。

我无法按数组过滤。我相信这是因为数组是由数字组成的,因为D列都是ID号,而不是字符串。

现在,我在Selection.Value = PackRemov部分的下标超出范围。

With ActiveSheet
    Set rNumberColumn = .Range("N:N")
    rNumberColumn.AutoFilter 1, Criteria1:="<>"
    PackRemov = .Range("D:D").Value
    ActiveSheet.AutoFilterMode = False

    For X = 1 To LRD
        Range("D" & X).Select
        If Selection.Value = PackRemov(i) Then
            Selection.EntireRow.Delete
        End If
    Next X

如果这不起作用,那么有没有办法我可以“查找”以匹配数组中的内容并删除那些行?

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

使用范围VBA创建数组时,如果范围是按列(例如A1:A5),它将创建多维数组而不是单个数组。

try:
    torch.bmm
except AttributeError:
    # whatever you wanted to do if it doesn't exist
else:
    # whatever you wanted to do with torch.bmm 

此外,在删除行时,您想向后循环,因为如果从1到X滚动,则在示例行5上并删除它,则行6变为行5,但是由于您已经处理了行5您将其移至6(即7),因此每次删除一个行都跳过了1行。您必须执行 For X = 1 To LRD Range("D" & X).Select If Selection.Value = PackRemov(i, 1) Then 'This should fix this portion Selection.EntireRow.Delete End If Next X 来解决此问题。

P.S。如果将其包含在循环中,则也可以摆脱 For X = LRD to 1 Step -1 行。删除 Range("D" & X).Select ,然后执行 Selection.Value Range("D" & X).Value

答案 1 :(得分:1)

如评论中所述,.AutoFilter首选一个看起来像数字的文本数组,以便CStr对该数组中的每个元素进行操作。

let vm = new Vue({
    el: "#container",
    data: {
        newPerson: {
            firstName: '',
            lastName: ''
        }
    },
    methods: {
        sendIdentity: function() {
            let personForm = vm.toFormData(vm.newPerson);
            const options = {
                method: 'POST',
                headers: { 'content-type': 'application/form-data' },
                data: personForm,
                url: 'phpfile.php',
            };
            axios(options)
                .then( function(response) {
                    console.log(response.data)
                })
                .catch(err => console.log(err);
        },
        toFormData: function(obj) {
            let formData = new FormData();
            for(let key in obj) {
                formData.append(key, obj[key]);
            }
            return formData;
        }
    }
});
相关问题