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", "")
我就是这样做的。
可能有更好的方法来做到这一点。 但如果其他人面临同样的问题,这将有助于。