我需要比较两列,找出其中一列缺少的内容。
Color available color required color missing
Blue, red (blue,white) or (blue,green)
White (green) or (red)
Blue,white,green (blue,white,pink) or (x,y,z)
我有一个大约300行的列表,我需要每天处理,这非常耗时。
有人可以帮助我在color missing
栏下获取此信息吗?
答案 0 :(得分:0)
这不是将在此处得到解答的问题类型。首先,你很不清楚你在追求什么。其次,我怀疑你需要很多代码来实现你的目标。
Stack Overflow适用于寻求帮助以改进代码的程序员。它不是一个免费编码网站。
这是我对你的要求的猜测
Color available color required color missing
Blue, red (blue,white) or (blue,green) (white) or (green)
White (green) or (red) (green) or (red)
Blue,white,green (blue,white,pink) or (x,y,z) pink or (x and y and z)
据我所知,父网站Stack Exchange没有网站帮助设计我认为你需要的程序。
您必须先设计您的程序。必须执行哪些任务才能实现目标?然后,您需要尝试在VBA中对每个任务进行编程。如果您在某项特定任务中失败,请在此处发布您的错误代码并解释其目标。如果任务很小并且您不知道从哪里开始,那么可以回答这里的问题。
第一个问题:你知道多少VBA?似乎有一种信念,你可以扫描互联网上的VBA脚本和缝合,然后一起进入工作程序,只需要很少的VBA知识。我不同意这个看法。我试过在网上搜索我认为简单问题的答案。我发现我知道的答案包括所需的代码但我无法看到如何在没有VBA知识的情况下从噪声中提取代码。您可以在互联网上搜索“Excel VBA Tutoral”,也可以在一个好的图书馆或书店找到一本书。花一些时间对VBA有一个基本的了解。这种时间投入将很快回报。
以下是我对初始任务列表的尝试。
您暗示行数每天都有所不同。你需要今天发现最后一次使用的行。您需要知道如何处理特定工作表单元格,以便可以访问其值。您可以直接访问工作表单元格,但将工作表复制到数组更快,通常更方便。这是所有基本工作表访问信息。
在第1列中,您有逗号或逗号空格分隔的颜色(有些是大写字母)。要处理这些颜色,您需要在数组中:
函数Split
会将这些字符串拆分为包含我显示的值的数组:Avail = Split(Col1Value, ",")
函数Trim
将删除前导和尾随空格。函数LCase
会将大写字符转换为小写字母。
第2列更复杂。在所有示例中,您只有一个“或”,颜色组被括号括起来。可以有多个“或”吗?这些组总是被括号括起来吗?可以省略“或”周围的空格,例如:(red, green)or(blue,white)
或(red, green)or (blue,white)
?
如果第2列中的值不一致,我怀疑最简单的解决方案是使它们保持一致。例如:
Col2Value = Replace(Col2Value, ")or(", ") or (")
Col2Value = Replace(Col2Value, ") or(", ") or (")
Col2Value = Replace(Col2Value, ")or (", ") or (")
然后您可以使用Split:Alternative = Split(Col2Value, " or ")
来提供:
对于每个替代方案,您需要修剪任何空格,移除前导和右括号并将其拆分为Col1Value。您现在有两个数组,您可以搜索第二个数组中缺少的值,并构建缺失颜色列表。
我希望这足以让你理解我认为你必须做的事情。我把整个程序分成了小任务。获取对工作表的访问权限。将第1列值拆分为单独的颜色。如有必要,使第2列值保持一致。将第2列值拆分为备选方案。将替代品拆分成所需的颜色。这些都是一个简单的任务,你应该能够用相对简单的VBA来解决。
祝你好运。