gpt4 book ai didi

vba - 根据特定文本字符串选择列

转载 作者:行者123 更新时间:2023-12-03 03:23:20 25 4
gpt4 key购买 nike

我正在尝试组合一个宏,该宏将选择某些列并将它们粘贴到新工作表中。问题在于,列往往会根据人们认为合适的方式添加和删除,这会破坏绝对引用。

我一直在尝试修改使用宏记录器生成的基本宏,但我没有运气根据其内容选择列。我有一张每天从我们的数据库生成的工作表,其中字段不断变化。例如,我想只选择零件编号、成本和联系人字段,但今天添加的 IDN 使我的旧宏失效了。

到目前为止,我已经尝试使用基本的 Excel 查找函数,例如 vlookup、针对常量列表的索引以及下面的查找函数,但似乎都不起作用。我在这里缺少什么来选择包含所需文本的列吗?

Columns(find("Part #")).Select

enter image description here

最佳答案

首先,be careful with .Select看来您没有完全限定对工作表的引用,因此请记下下面完整的 Workbook.Worksheet.Range 类型引用。

这是您的快速解决方案:

Public Sub Test()
'the Range approach
ThisWorkbook.Worksheets("Sheet1").Rows(1).Find(What:="Part #", LookAt:=xlWhole).EntireColumn.Copy
ThisWorkbook.Worksheets("Sheet2").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats 'or xlPasteAll to include formulas
End Sub

使用整个列范围通常不是最好的主意。它会起作用,但前提是您记得每次都将复制的列粘贴到目标工作表的第一行中。

这是更好的选择(IMO):
通过单击功能区主页选项卡上的“格式化为表格”,将数据转换为表格(在 VBA 中称为 ListObject)。现在引用您的专栏变得更加容易 - 只需按名称即可,无需使用Find

Public Sub Test()
'the ListObject approach
ThisWorkbook.Worksheets("Sheet1").ListObjects("MyTable").ListColumns("Part #").Copy
ThisWorkbook.Worksheets("Sheet2").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats 'or xlPasteAll to include formulas
End Sub

您需要知道表格的名称(我在这里将其称为 MyTable),您可以在选择表格后单击功能区上的“表格”来完成此操作

关于vba - 根据特定文本字符串选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118849/

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