使用 VBA 在单元格内查找字符串

2023-11-22

我已经为此发疯了一天,到处搜索,可能是我想变得太可爱,所以我完全陷入困境。

我正在尝试运行一个简单的 if then

如果一个单元格包含“%”,我希望它做一件事,如果不是另一件事。由于我不明白的原因,我无法让它发挥作用。我显然从其他地方借鉴了一些想法,但仍然无法使其发挥作用。

复杂的因素 - 我不想在整个列上运行它,只是在一个表上运行,因此它使用大量或相对的 ActiveCells 嵌入到更大的子中。我永远不知道 A 列中的哪个位置会遇到“% Change”,因此范围始终必须是可变的。我希望 VBA/VBE 在遇到带有“%”的单元格时执行不同的操作。所以

这是原始数据的样子

Initial Value (6/30/06)

Value (12/31/06)

Net Additions (9/30/07)

Withdrawal (12/07)

Value (12/31/07)

Withdrawal (2008)

Value (12/31/08)

Addition (8/26/09)

Value (12/31/09)

Value (12/31/10)

Value (12/30/11)

Value (3/31/12)

% Change 1st Quarter

% Change Since Inception

但是当我运行以下命令时,它陷入了一个错误的循环,它应该退出到“If then”而不是子程序的“Else”部分。

Sub IfTest()
 'This should split the information in a table up into cells
 Dim Splitter() As String
 Dim LenValue As Integer     'Gives the number of characters in date string
 Dim LeftValue As Integer    'One less than the LenValue to drop the ")"
 Dim rng As Range, cell As Range
 Set rng = ActiveCell

Do While ActiveCell.Value <> Empty
    If InStr(rng, "%") = True Then
        ActiveCell.Offset(0, 0).Select
        Splitter = Split(ActiveCell.Value, "% Change")
        ActiveCell.Offset(0, 10).Select
        ActiveCell.Value = Splitter(1)
        ActiveCell.Offset(0, -1).Select
        ActiveCell.Value = "% Change"
        ActiveCell.Offset(1, -9).Select
    Else
        ActiveCell.Offset(0, 0).Select
        Splitter = Split(ActiveCell.Value, "(")
        ActiveCell.Offset(0, 9).Select
        ActiveCell.Value = Splitter(0)
        ActiveCell.Offset(0, 1).Select
        LenValue = Len(Splitter(1))
        LeftValue = LenValue - 1
        ActiveCell.Value = Left(Splitter(1), LeftValue)
        ActiveCell.Offset(1, -10).Select
    End If
Loop
End Sub

感谢所有帮助,谢谢!


我简化了您的代码以隔离单元格中“%”的测试。一旦你让它工作起来,你就可以添加其余的代码。

尝试这个:

Option Explicit


Sub DoIHavePercentSymbol()
   Dim rng As Range

   Set rng = ActiveCell

   Do While rng.Value <> Empty
        If InStr(rng.Value, "%") = 0 Then
            MsgBox "I know nothing about percentages!"
            Set rng = rng.Offset(1)
            rng.Select
        Else
            MsgBox "I contain a % symbol!"
            Set rng = rng.Offset(1)
            rng.Select
        End If
   Loop

End Sub

InStr将返回搜索文本在字符串中出现的次数。我改变了你的if首先测试检查是否没有匹配项。

消息框和.Selects只是为了让您在单步执行代码时看到发生了什么。一旦你开始工作,就把它们拿出来。

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

使用 VBA 在单元格内查找字符串 的相关文章

  • 使用 VBA 在另一个 Access 实例中打开特定窗体

    所以我在这里四处查看并找不到我的问题的答案 至少不完全是 案例如下 我在 DBase1 中 想要单击一个按钮并在单独的访问实例中打开 DBase2 中的 NeuSteckbrief 表单 我设法使用以下代码在单独的实例中打开 DBase2
  • 在 EXCEL 中使用多个表的条件求和

    我有一个表 我试图根据两个参考表的值来填充该表 我有各种不同的项目 类型 1 类型 2 等 每个项目运行 4 个月 并且根据其生命周期的不同时间 花费不同的金额 这些成本计算显示在Ref Table 1 参考表1 Month a b c d
  • 使用 string.whitespace 删除 Python 中的空格

    Python 的 string whitespace 很棒 gt gt gt string whitespace t n x0b x0c r 如何在不手动输入 t n 等正则表达式的情况下将其与字符串一起使用 例如 它应该能够转动 请不要伤
  • 如何将整个流读入 std::string ?

    我正在尝试将整个流 多行 读入字符串中 我正在使用这段代码 它有效 但它冒犯了我的风格感 当然有更简单的方法吗 也许使用字符串流 void Obj loadFromStream std istream stream std string s
  • VBA:删除数组项后减少循环迭代?

    在 Excel 的 VBA 中 For i 0 To UBound artMaster For j i To UBound artMaster If i lt gt j And artMaster i VDN artMaster j VDN
  • 有没有办法设置一个变量一次并在多个地方使用它而不给它模块级别的范围?

    我有一个循环将用户窗体控件添加到集合中 由于多个地方都需要该集合 因此我将其放入模块中并在需要时调用它 这意味着该集合仅在需要时才位于内存中 但这也意味着我每次想要使用它时都会运行一个循环 I could已给出集合模块级别范围并在第一次需要
  • VBA:访问 JSON

    我正在处理 VBA 投影 但不确定如何访问此 JSON 中的 id 应该将 players 设置为什么才能在循环中获取 id 我已经用更多代码更新了问题 JSON event games players id 182759 Code Pri
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 检查 href 中是否存在 jQuery 中的查询字符串

    我目前有一段 jQuery 用于附加带有一些位置信息的 URL jQuery a attr href function return this href location 123 abc 我的问题是大多数链接都有一个 其中使用上面的 就可以
  • 双击事件 - 多个范围

    我正在寻找为双击事件在多个范围内进行编码的最佳方法 Private Sub Worksheet BeforeDoubleClick ByVal Target As Range Cancel As Boolean If Not Interse
  • 2.5 是否有一个 Python 模块提供类似于 2.6 中的 "string".format() 调用的功能?

    2 5 是否有免费的 Python 模块提供类似于 2 6 3 x 中的 string format 调用的功能 我正在为 2 5 编写新代码 我不想在新代码中使用 格式表达式 您可能会发现这里的代码可以适应您的需要 http svn py
  • 从 str 转换为 float 时保持尾随 0

    将带有尾随零的数字从字符串转换为浮点数时遇到以下问题 a 1 100 string a str a float a float string a float a 1 1 有没有办法将 str 转换为 float 同时保留末尾的尾随 0 首先
  • 更改索引设置访问 VBA

    我正在尝试自动化 Access 中的流程 我希望自动化的步骤之一是更改表中某些字段的索引设置 我需要这样做来提高后续查询的速度 使用索引查询速度大约快 100 倍 无论如何 假设我的表名为 Cars 如下所示 ID Name Charact
  • 基本 C++ 文本对齐

    我正在尝试编写一个程序 该程序从文件中获取输入行并使其恰好为 80 个字符 假设输入行始终小于 80 然后打印该行 这是通过在以下标点符号后添加最多两个空格来完成的 如果一行少于 41 个字符 则不加修改地打印 如果该行仍然不是 80 个字
  • 搜索/排序算法 - 是否有类似 GoF 的列表?

    我是一名自学成才的开发人员 坦率地说 我不太擅长找出在任何特定情况下使用哪种搜索或排序算法 我只是想知道是否有设计模式 esque 列出了以太坊中可用的常见算法 供我添加书签 就像是 算法名称 带有别名 如果有的话 它解决的问题 大O成本
  • 自定义函数错误:“表达式不能在计算列中使用”

    在 Access 2010 中 我尝试在计算列中使用自定义 VBA 函数 我得到 表达式不能在计算列中使用 这是我的步骤 启动 Access 2010 创建一个新的数据库 DB 创建一个包含文本列 Column1 的表 Table1 在 C
  • PHP Soap Server:使用字符串(xml 字符串)而不是 WSDL 文件(指向它的 url)实例化

    Soap Server的PHP页面 我见过 http www php net manual en soapserver soapserver php http www php net manual en soapserver soapser
  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L

随机推荐

  • cmdlet 如何知道何时真正应该调用 WriteVerbose()?

    cmdlet 如何知道何时really应该打电话WriteVerbose WriteDebug 等等 也许我错过了一些简单的事情 但我找不到答案 所有 cmdlet 到目前为止我见过的实现只是调用WriteVerbose 没有任何 犹豫 我
  • 在solaris中获取昨天的日期

    我正在运行 SunOS bash 3 00 uname a SunOS lvsaishdc3in0001 5 10 Generic 142901 02 i86pc i386 i86pc 我需要找到Yesterday s date in li
  • 如何在 web.xml 中的 标记中指定根上下文?

    我想在 WAR 文件中指定 Java Web 应用程序的根上下文 我怎样才能使用有效的方法来做到这一点web appXML 中的web xml file 哦 是的 我想以与应用程序服务器无关的方式执行此操作 这不能以与应用程序服务器无关的方
  • Typescript:我可以定义一个 n 长度的元组类型吗?

    我正在使用 Typescript 创建一个将棋游戏板 将棋盘有 9 个等级 我想将 9x9 多维数组断言为一种类型 以确保数组的大小和内容 目前我正在这样创建 9x9 板类型 type Board9x9 p P P P P P P P P
  • numpy.array 形状 (R, 1) 和 (R,) 之间的区别

    In numpy 一些操作恢复原状 R 1 但有些返回 R 这将使矩阵乘法更加繁琐 因为显式reshape是必须的 例如 给定一个矩阵M 如果我们想做numpy dot M 0 numpy ones 1 R where R是行数 当然 同样
  • 如何从颜色资源中获取 color-int?

    有什么方法可以从颜色资源中获取 color int 吗 我试图获取资源 R color myColor 中定义的颜色的各个红色 蓝色和绿色分量 以便我可以将三个搜索栏的值设置为特定级别 您可以使用 getResources getColor
  • 如何从android中的gradle依赖项添加的外部库目录中删除jar文件?

    首先 我在gradle中添加了依赖 然后同步项目 我们没有错误 但是当我们运行应用程序时 我们收到了一个错误 该错误也显示在图像中 app transformClassesWithJarMergingForDebug FAILED Erro
  • AppEngine Channel API - 检查通道是否仍然打开的最佳方法(服务器端)

    我已经在 AppEngine 上构建了一个社交网络 约会类型应用程序 目前正在添加基于 Channel API 构建的聊天 然而 我遇到的问题是用户可能会在聊天时重新加载或导航到新页面 就像在 Facebook 中一样 这意味着服务器不容易
  • Windows 上的 PHP PDO 安装 (xampp)

    我正在尝试开发一个可以在 PHP 上连接到尽可能多的不同数据库的 Web 应用程序 PDO http www php net manual en book pdo php 似乎是正确的接口 但我在安装我需要的所有不同 PDO 数据库驱动程序
  • 使用 Qt 4.4 的自定义停靠区域

    是否可以使用 Qt 4 4 创建自定义停靠区域 我知道这在 Qt 3 中是可能的 因为document建议 摘自文档 如果您需要创建自己的停靠区域 我们建议您创建 QWidget 的子类并将 Q3DockAreas 添加到您的子类 然而 在
  • “spark.yarn.executor.memoryOverhead”和“spark.memory.offHeap.size”之间的区别

    我在纱线上运行火花 我不明白以下设置有什么区别spark yarn executor memoryOverhead and spark memory offHeap size 两者似乎都是为 Spark 执行器分配堆外内存的设置 我应该使用
  • 以编程方式阅读、突出显示、保存 PDF

    我想编写一个小脚本 将在无头 Linux 服务器上运行 来读取 PDF 突出显示与我传递的字符串数组中的任何内容相匹配的文本 然后保存修改后的 PDF 我想我最终会使用类似的东西python 与 poppler 的绑定但不幸的是 文档几乎为
  • 带有圆角的数据网格模板

    I m creating DataGrid template with rounded corners but I faced with this problem 底角超出边界范围 怎么解决这个问题呢 我读过这篇文章 http diptim
  • 操纵可变参数的标准方法?

    这是一个奇怪的问题 但是有没有一种标准方法来操纵 a 的内容va list在将其传递给另一个函数之前 例如 假设我有两个函数 sum and vsum int vsum int n va list ap int total 0 for in
  • 从后台任务或服务确定当前前台应用程序

    我希望有一个在后台运行的应用程序 它知道任何内置应用程序 消息 联系人等 何时运行 所以我的问题是 我应该如何在后台运行我的应用程序 我的后台应用程序如何知道当前在前台运行的应用程序是什么 如果有经验人士的回复 我们将不胜感激 关于 2 我
  • 如何从阵列列表中添加多个音轨

    我想为单个音轨添加多个音轨video与此类似的文件https codepen io eabangalore pen NZjrNd 他们正在使用自己的jsvideojs 我有要切换的音轨列表 var usersAudioTrackList h
  • 为什么提交和签出后文件夹会留在我的本地 git 工作目录中

    我创建了一个文件夹 其中包含本地工作 git 结构中的文件 我使用 git checkout b 创建了一个新分支并使用了 git add 和 git commit m 将这些文件添加到我的本地分支 但是 当我执行 git checkout
  • 我们可以使用 AWS Glue 将文件从一个 S3 文件夹复制到另一个 S3 文件夹吗?

    我需要将压缩文件从一个 AWS S3 文件夹复制到另一个文件夹 并希望将其作为计划的 AWS Glue 作业 我找不到这样一个简单任务的例子 如果您知道答案请帮忙 答案可能就在 AWS Lambda 或其他 AWS 工具中 非常感谢 您可以
  • 声明二维数组

    我有几项大学作业遇到了麻烦 确实 我只是对有关数组的一件事感到困惑 我需要声明一个三列 五行的数组 前两列是整数 第三列是字母等级 所以我对声明数据类型感到非常困惑 因为它们是不同的 这是我第一次使用数组 所以请原谅我的无知 这是我的数组应
  • 使用 VBA 在单元格内查找字符串

    我已经为此发疯了一天 到处搜索 可能是我想变得太可爱 所以我完全陷入困境 我正在尝试运行一个简单的 if then 如果一个单元格包含 我希望它做一件事 如果不是另一件事 由于我不明白的原因 我无法让它发挥作用 我显然从其他地方借鉴了一些想