如何在vba中计算和识别单元格内的数字和字符串?

Posted

技术标签:

【中文标题】如何在vba中计算和识别单元格内的数字和字符串?【英文标题】:How to count and recognize number and strings withing a cell in vba? 【发布时间】:2016-05-12 17:56:33 【问题描述】:

我在 B 列中有一个列表,其中包含来自不同市场的订单 ID。 我想在 F 列中填写市场名称。

识别它们的方法是根据字符串的长度(有些只是数字,有些是数字和连字符,12345 = 批发,123-6789123-1210112 = amazon),还有一些特定字符(例如 1234567E = gogo,或 1234OB = 打开盒子)。 我想在VBA中做到这一点。

这是我目前的代码。

Sub profit()
    Dim x As Long
    Dim lastrow As Long
    lastrow = Sheets("profit april 28 to may 11").Cells(Rows.Count,"b").End(xlUp).Row
       For x = 6 To lastrow
          If Cells(x, 1) = Cells(x, 2) Then
           Cells(x, 6).Value = "wholesale"
            Else: x = x + 1

        End If
     Next x
End Sub

此代码运行良好,但仅通过比较 A 列和 B 列中的值给我批发订单。对于其余的 ID,我没有参考列(如 A)。所以我需要计算字符串上的字符。但是有些字符串的长度相同,那么我需要寻找第二个条件(12345678 和 1234567E 的长度相同,但一个字符不同)。我想知道如何在 vba 中计算单元格中的字符以及如何在 VBA 中使用字符串查找特定字符?

【问题讨论】:

Stack Overflow 不是我网站的代码。你试过什么?根据您提供的信息,这个问题将被认为过于宽泛。所以我能提供的唯一帮助是使用带有 ID 和相应文本的表格。然后使用 Range.Find() 或 Application.Match() 函数查找行并获取该行中对应的单元格。 Scott,我找到了一种查找“批发”订单的方法,但我在尝试添加其他变量时遇到了困难。到目前为止,这是我的代码.....Sub profit() Dim x As Long Dim lastrow As Long lastrow = Sheets("profit 4 月 28 日至 5 月 11 日").Cells(Rows.Count, "b").End( xlUp).Row For x = 6 To lastrow If Cells(x, 1) = Cells(x, 2) Then Cells(x, 6).Value = "wholesale" Else: x = x + 1 End If Next x End Sub ......有了这个特定的订单 ID,我使用 A 列作为参考。但我对其他 ID 没有相同的参考 请使用编辑将代码放在原始帖子中。然后具体告诉我们它在做什么错误,在哪一行以及您收到什么错误。 您可以使用Len() 函数计算字符串字符,并使用Instr() 函数查找字符串中的特定字符。如果您显示一些数据,我们可能会更有帮助 【参考方案1】:

在这里完全解释太长了,你的问题很广泛,但你想要的是正则表达式。如果您在网上和 *** 中进行一些搜索,您应该能够弄清楚如何构建一些模式来匹配您的数据并使用它。不过,这里有一些资源可以帮助您入门。

How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops

https://msdn.microsoft.com/en-us/library/ms974570.aspx

【讨论】:

以上是关于如何在vba中计算和识别单元格内的数字和字符串?的主要内容,如果未能解决你的问题,请参考以下文章

vba中如何将单元格内容强制转换为文本类型?

在EXCEL中,如何使用VBA设置单元格内指定字符串格式

如何实现VBA 判断单元格内数据是不是为整数,是则无影响,否则出现消息框,单元格清空?

如何让 Excel VBA 识别数字单元格?

Excel vba 执行时间与单元格内容长度呈指数关系

VBA如何根据某单元格内容锁定某区域