gpt4 book ai didi

VBA - EXCEL 删除指定范围以外的列

转载 作者:行者123 更新时间:2023-12-04 21:04:46 26 4
gpt4 key购买 nike

我一直在寻找答案,但找不到如此具体的答案。

我正在尝试编写对没有任何编程知识的人来说易于使用的宏。

因此,我们使用定价模板,您可以在其中查看许多不同国家/地区的价格。我想创建一个宏,它将复制整个选项卡并删除不需要的列,这取决于它创建文件的国家/地区。 (需要保留公式,我仍然想要所有的计算而不是值)。

因此,前几列将保留,因为它们对所有国家都是通用的,然后应删除除选定范围之外的所有列。范围在单独的选项卡中指定,并将存储在数组中。

例子:
比利时
第一栏:CJ
最后一栏:CQ

因此,假设在第一个循环中存储第一列和最后一列值,我希望宏从 H 删除列到 CI,然后从 CR 到 HF。

然而,在下一个循环中,first 和 last 将发生变化,因此必须重新计算删除范围。

我尝试使用公式 ASC 和 CHR,但它不适用于两个字母代码。

最佳答案

好吧,如果您已经知道要使用的范围,那么像这样的子例程可以删除一系列列,减去异常范围。

我只是遍历列并检查交叉点。如果正在测试的列与异常范围之间没有交集,我们将其添加到要删除的列列表中。

Public Sub RemoveColumnsExcept(removeRange As Range, exceptRange As Range)
Dim deletionRange As Range
Dim columnRange As Range

For Each columnRange In removeRange.Columns
If Intersect(columnRange, exceptRange) Is Nothing Then
If deletionRange Is Nothing Then
Set deletionRange = columnRange
Else
Set deletionRange = Union(deletionRange, columnRange)
End If
End If
Next columnRange

If Not deletionRange Is Nothing Then
deletionRange.Delete xlShiftToLeft
End If
End Sub

Public Sub Test()
RemoveColumnsExcept Sheet1.[B:J], Sheet1.[G:I]
End Sub

您可以使用命名范围来跟踪要删除的列。那个或列标题和一个循环在特定行中寻找一些值,如国家代码。

关于VBA - EXCEL 删除指定范围以外的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26146238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com