Excel VBAmacros可根据各种search标准将列中的空字段更改为“已检查”(string)

您好,我真的是新的VBAmacros,并希望在这个问题上的任何帮助。

我需要编写一个macros来根据不同的search标准将列的值更改为“checked”。 我的要求是,其中一个列的值必须自动标记为检查基于search标准,这将search其他列的string值内的一列中的string中包含的序列号的存在。

请帮我创build一个macros来完成这个任务。

我很遗憾地说,由于保密原因,我不能分享代码或附上截图来进一步解释情况。

详细说明

需要修改的列:注释(最初为空)

用于search条件的列:可以是现有表中的任何列。

search条件:

  • 参考列中的一个子string(基本上是一个6位数的数字将被选作search关键字)

注意:本栏没有特定的格式(我们无能为力)例如:在一列中,条目将是35567890-DEF-GHJ,而在另一列中将是类似于参考号35567890–并且在另一列中它将会像CEK 35567890一样。

  • 子string不仅要检查同一个库中的条目,还要检查整个表的内容。 基本上它就像在Excel中的查找function。

  • 如果发现匹配,我需要在借方和贷方条目中加上这些值,并查看结果是否为0.如果结果为零,则需要在允许string值的注释字段中input“checked”。

这不是一个完整的macros,但仍然是工作。

仅用于提取产品代码的macros。 对于剩余的过程,我使用现有的function,在净额上执行比较function,然后使用一个简单的标记列作为检查。

用于提取产品代码的macros。

Public Function getProductCode(source As String) As String Dim rExp As Object, allMatches As Object, match As Object Dim result As String: result = "" Set rExp = CreateObject("vbscript.regexp") With rExp .Global = True .MultiLine = False .Pattern = "(?:^|\D)(\d{7,8})(?!\d)" End With Set allMatches = rExp.Execute(source) For Each match In allMatches result = result + match.SubMatches.Item(0) Next getProductCode = result End Function 

然后创build一个新的“参考”列,其中使用了macros来传递特定列,并将提取的产品代码存储在这里。

之后,一个函数被用来查找重复的条目,并总结出售的产品总数。 我使用的公式如下:

 =ROUND(SUMIFS([Total],[Reference],[@Reference]),2)=0 

最后,我使用了一个简单的if将列标记为检查,如果以前生成的结果(列状态)为true。

 =IF([@Column1]=TRUE, "Checked", "") 

我就是这样做的。

可能有更好的方法来做到这一点。 但如果其他人面临同样的问题,这将有助于。