VBA:将多个值传递给 Instr

2023-11-21

现在,我有一长串用户通过表单提交的“行业”值。我编写了一个宏,它将搜索这些值中的特定术语,并粘贴符合我的“可接受”行业值的小得多的列表的值。重点是将用户提交的所有当前行业值重新分类到我现有的分类法中。这是我的 If-Then 语句目前的样子:

If InStr(1, Cells(i, "A").Value, "Energy") > 0 Or InStr(1, Cells(i, "A").Value, "Electricity") > 0 Or InStr(1, Cells(i, "A").Value, "Gas") > 0 Or InStr(1, Cells(i, "A").Value, "Utilit") > 0 Then
Cells(i, "B").Value = "Energy & Utilities"
End If

这是相当难看的。工作得很好,但读起来很费力。我的宏中充斥着这些难以理解的 If-Then 语句,很难通读全部内容。有没有办法将多个值传递给“String2”参数Instr?


[On Edit:我修改了该函数,以便如果最后一个参数是整数,则它扮演compareMode参数输入Instr(0 表示区分大小写,这是默认值,1 表示不区分大小写)。作为最后的调整,您还可以为可选的最终参数传递布尔值而不是整数True对应于不区分大小写和False对应默认区分大小写]

如果你经常做这种事情,那么编写一个类似于以下的函数是有意义的inStr但可以处理多种模式。ParamArray是一个自然使用的工具:

Function Contains(str As String, ParamArray args()) As Boolean
    Dim i As Long, n As Long, mode As Integer

    n = UBound(args)
    If TypeName(args(n)) <> "String" Then
        mode = args(n)
        mode = Abs(mode) 'So True => -1 => 1 for case-insensitive search
        n = n - 1
    End If

    For i = 0 To n
        If InStr(1, str, args(i), mode) > 0 Then
            Contains = True
            Exit Function
        End If
    Next i
    Contains = False
End Function

测试如下:

Sub Test()
    Debug.Print Contains("General Electric", "Gas", "Electric", "Oil")
    Debug.Print Contains("General electric", "Gas", "Electric", "Oil")
    Debug.Print Contains("General electric", "Gas", "Electric", "Oil", False)
    Debug.Print Contains("General electric", "Gas", "Electric", "Oil", True)
    Debug.Print Contains("General electric", "Gas", "Electric", "Oil", 1)
    Debug.Print Contains("General Motors", "Gas", "Electric", "Oil")
End Sub

Output:

True
False
False
True
True
False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA:将多个值传递给 Instr 的相关文章

  • 获取当前 VBA 函数的名称

    对于错误处理代码 我想获取发生错误的当前 VBA 函数 或子函数 的名称 有谁知道如何做到这一点 编辑 谢谢大家 我曾希望存在一个未记录的技巧来自行确定函数 但这显然不存在 我想我会保留当前的代码 Option Compare Databa
  • Excel 2003 中的 IFERROR

    我通过阅读几个线程了解到IFERROR在 Excel 2003 中由IF ISERROR 我尝试从 Excel 2007 复制的代码是 IFERROR A1 我知道必须有一个简单的解决方案将其转换为IF ISERROR 但我没有任何效果 意
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 如何使用 VBA 添加 MS Outlook 提醒事件处理程序

    我想扩展 MS Outlook 以便当弹出日历提醒时 我可以运行一个可以运行外部程序 如批处理脚本 的 VBA 挂钩 就我而言 我想将提醒 转发 到 Linux 桌面 因为我在这两种环境中工作 并且 Windows 桌面并不总是可见 我看到
  • 在 Excel 中生成随机 -1 和 +1 值

    The Rand 函数会生成一个 0 到 1 之间的实数 这Randbetween 1 1 将生成 1 0 或 1 我想要的只是 1或1 那么 1 到 1 之间的实数呢 Easy IF RAND lt 0 5 1 1 要获得实数 请使用 R
  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代
  • 数据透视表错误 |无效的调用或过程

    我需要一些帮助来解决这个问题 我正在尝试创建一个数据透视表 从第一季度开始 在同一张表中包含一系列数据 第一个 if 语句在那里是因为最后一列并不总是包含标题 所以我将其包含在那里 我希望范围是动态的 因为所制作的表格的大小将根据工作表中数
  • 使用“Openxml writer”合并 Excel 中的单元格

    我想合并单元格是excel 通过使用 DOM 方法 我可以轻松做到这一点 但由于我的 Excel 文件太大 当我尝试获取工作表时 它会抛出内存不足异常 所以我必须使用SAX方法来读取excel文件 但我不知道如何用这种方法合并单元格 查了很
  • 将 HTML 转换为 Excel 的最佳方法是什么

    我有一个 HTML 页面 其中包含 Flash 图表 FusionCharts 和 HTML 表格 我需要将这整个事情转换成Excel HTML 表格应显示在 Excel 工作表的单元格中 Flash 图表可以显示为图像 我们可以使用任何开
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • 使用 PhpSpreadsheet PHP 设置单元格边框样式

    我使用 PhpSpreadsheet 来读取或写入 Excel 文件 我想向我的 Excel 添加边框样式 所以我使用了以下代码
  • 在Excel VBA中将图像(jpg)转换为base64?

    我需要在 Excel 中转换图像 或通过VBA 转为base64 最后我将进行XML输出 我怎样才能做到这一点 我需要引用 DOM 吗 我一直在读书这个问题 https stackoverflow com questions 169907
  • 比较 EXCEL 中的列本身以检查其是否有重复值

    假设我有一个名为项目代码的列 如下所示 row code 1 A123 2 B123 n A123 代码列中的值可能出现多次 如何使用Excel公式或Excel中的任何方法检查列中的重复记录 Thanks 根据您使用的 Excel 版本 您
  • 从Excel工作表中读取汉字? (总是返回“???”)

    如何从Excel单元格中读取汉字并将其写入文件 当我取值时 Worksheets ActiveCell Worksheet Name Cells 3 columnNumbers 0 value 它总是返回 Dim fileStream Fi
  • 索引行和列意外结果

    我试图理解以下行为 如果我有以下数据 A B a 1 b 2 c 3 如果我使用 INDEX A 1 B 3 它将正确显示整个范围 如果我使用 INDEX A 1 B 3 1 它将正确显示两列第一行的数据 如果我使用 INDEX A 1 B
  • 调试VBA、定位问题及排查方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有哪些方法调试VBA代码 具体来说 单步执行代码 断点和停止命令 TheDebug command 当地人和观察窗 调用栈 调试 VB
  • 字符串在换行符处拆分

    我在 MS Access 表单上有一个文本框 用户将从 Excel 电子表格中复制一列数字到其中 我需要获取此输入并将其用作参数来构建查询 我的代码看起来像这样 Dim data as variant Dim input as String
  • python XlsxWriter 设置多个单元格周围的边框

    I need an easy way to set border around multiple cells like so 我发现的只是 1 个单元格的边框 并合并单元格 这不是我需要的 我期待类似的事情 worksheet range
  • 溢出范围:将数组转换为与 @ 的交集值

    在 Excel 引入溢出范围之前 在 运算符 可以使用 将范围 转换 为单个值0 数值 或 字符串 但 并不完全相同 假设有一列正整数从B4向南 从D2向东有一行正整数 并且 A 列和 C 列以及第 1 行和第 3 行完全是空的 目的是将单
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此

随机推荐

  • 自动释放何时真正导致 Cocoa Touch 中的释放?

    我明白你需要小心autorelease在 iOS 上 我有一个返回对象的方法allocs 这是调用者需要的 所以在这种情况下 据我所知 我需要发送autorelease返回之前被调用者中的对象 这很好 但是一旦控制权返回到手机 即在处理了我
  • 如何使用 spring boot 和 Liquibase 变更集 yaml 文件访问系统属性

    使用 Liquibase 管理数据库架构更改的 Spring Boot Java 应用程序是通过指定其运行环境的参数 例如 dev int 启动的 有相应的属性文件 例如 dev properties int properties 它们定义
  • 签入时 Visual Studio 崩溃

    当我每次尝试签入挂起的更改时 我的 Visual Studio 2013 都会崩溃 我该如何解决 崩溃日志 System UnauthorizedAccessException Package SccProviderPackage fail
  • OpenCV 结构化边缘检测器的模型文件

    OpenCV实现结构化边缘检测基于基于随机森林的方法概述 用于快速边缘检测的结构化森林 2013 作者 P Doll r 和 C Zitnick 作者已发表Matlab 的实现还有一个用于Python 两者还包含基于 BSDS500 数据集
  • i18n 用于选择框

    我有一个名为 Role 的模型 我正在表单中使用下面的助手 有没有办法将 name 属性的值更改为另一种语言 语言环境 de yml de role admin something editor something something 在模
  • 请求的纹理大小 [0x0] 无效。当我在浏览器中加载图像时出错

    调用预测函数时浏览器中的 Tensorflow js 错误 我正在使用 Node js 来运行 web 应用程序 这是我包含的脚本 我正在 Chrome 中运行 Node js 但无法解决该错误 该项目有 7 个类作为输出 是形状为 1x7
  • 在 C# 中使用 REF 和 OUT 关键字进行按引用传递与按值传递

    到目前为止我的理解如下 价值传递 按值传递意味着传递参数的副本 对该副本的更改不会更改原始版本 通过参考 通过引用传递意味着传递对原始内容的引用 对引用的更改会影响原始引用 参考关键字 REF 告诉编译器该对象在进入函数之前已初始化 REF
  • 如何处理列表推导式中的异常?

    我在 Python 中有一些列表理解 其中每次迭代都可能抛出异常 例如 如果我有 eggs 1 3 0 3 2 1 egg for egg in eggs 我会得到一个ZeroDivisionError第三个元素例外 如何处理此异常并继续执
  • HTML5 Colspan - 替代方案[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我在 HTML 的 td 标签之一中使用 colspan 我不想在 HTML 中使用 c
  • 带有外部 .jar 的 Java 命令行

    我使用 jar 开发一个项目来重用代码 所以我有一个名为 TOOLS jar 的 jar 并且我在文件 HelloWorld java 中开发了一个简单的应用程序 该应用程序从 TOOLS jar 引用我的包 TOOLS 我用这个命令行编译
  • python 输入 UnicodeDecodeError:

    蟒蛇3 x gt gt gt a input hope gt gt gt a hope gt gt gt b input h pe gt gt gt b h pe gt gt gt c input start typing h delete
  • 全局作用域与全局命名空间

    我看到了这两个短语的用法 全局范围和全局名称空间 它们之间有什么区别 在 C 中 每个名称都有其作用域 超出该作用域就不存在 范围可以通过多种方式定义 它可以通过以下方式定义名称空间 功能 classes并且只是 因此 全局或其他命名空间定
  • 旋转分类散景图的小刻度标签

    我正在尝试轮换专业 和短轴在 Bokeh 的多类别图中 类似于对主要刻度标签所做的操作 here并在 matplotlib 中完成here 当有多个类别时 它们的标签 文本经常会混淆在一起 从中汲取一些灵感有关分类数据的 Bokeh 文档结
  • 将字符串转换为整数[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 String 转换为 Int Hi 我在将字符串转换为整数时遇到以下问题 string str line Substring 0 1 This picks an integer at offs
  • 上传文件时出现错误“无法处理部件,因为未提供多部件配置”[重复]

    这个问题在这里已经有答案了 我试图通过 JSP 文件中的表单上传文件 但收到此错误 Servlet 已经具有 MultipartConfig 表示法 我正在使用 servlet 3 0 和 apache tomcat 8 错误信息 java
  • CSS 在容器内旋转元素

    如果你看一下 http jsfiddle net KA4dz 在此演示中 您可以清楚地看到内部元素由于旋转而到达外部元素的外部 请求是缩小内部元素 同时保持纵横比和中心位置 使其适合其容器 用例是用户可以手动旋转这样的内部元件 同时确保其保
  • 如何在 Linux 上将 googleTest 设置为共享库

    Debian 不再为 gTest 提供任何预编译包 他们建议您将该框架集成到项目的 makefile 中 但我想保持我的 makefile 干净 如何像以前的版本 在开始之前 请确保您已阅读并理解这篇来自谷歌的注释 本教程使 gtest 的
  • 在 Dynamics 2011 中调用对话框并向其传递多个 recordID

    我希望允许用户从联系人实体中选择一个或多个联系人 然后启动一个接受记录 ID 的对话框 这个想法是向联系人添加一些自定义配置 我目前在功能区按钮上有一个自定义操作 可以启动一个对话框 但它只接受一个记录 ID 我可以访问所选记录 ID 的列
  • 如何在 Razor 中定义方法?

    如何在 Razor 中定义方法 暂且不谈任何关于何时 如果有的话 应该完成的争论 功能就是你如何做 functions Add code here
  • VBA:将多个值传递给 Instr

    现在 我有一长串用户通过表单提交的 行业 值 我编写了一个宏 它将搜索这些值中的特定术语 并粘贴符合我的 可接受 行业值的小得多的列表的值 重点是将用户提交的所有当前行业值重新分类到我现有的分类法中 这是我的 If Then 语句目前的样子