我用宏拍了一个精神障碍。我在航空业工作,正在研究电线列表输出CSV文件。对于大多数人我只需要连接;但是,对于特定的线型,它们是双绞线。那些需要结合起来的新线。
原始输出标准化布局
Service
宏
后的所需输出 A C D F G
WIRENAME-BLU POINT1 LOCATION POINT2 LOCATION
WIRANAME-WHT POINT1 LOCATION POINT2 LOCATION
我知道这可以通过连接来完成,但是要与#34; WIRENAME"的部分IF方面进行斗争。
每个电线名称的结构都是这样的,
A C D F G
WIRENAME-BLU POINT3 LOCATION POINT4 LOCATION
WIRENAME-WHT POINT1 LOCATION POINT2 LOCATION
A (This can all be concat in column A.)
(WIRENAME-WHT) POINT1LOCATION-POINT2LOCATION / BLU POINT3LOCATION-POINT4LOCATION
我甚至不知道从哪里开始使用部分if语句来组合部分匹配单元格和组合。
编辑:
很抱歉这个混乱,每个TwistedCable,最多可以包含四根电线。
Regular wire
12345XXX0001-WHT
12345XXX0002-WHT
Twisted Wires
12345XXX0010-BLU
12345XXX0010-WHT
答案 0 :(得分:0)
解决此问题的最简单方法是创建一个查找与绞线相关的代码的公式。如果我正确理解了这个例子,那么绞线将具有类似于这种模式的代码:
#####[A-Z][A-Z][A-Z]0010-[A-Z][A-Z][A-Z]
# - Any number
[A-Z] - Capital letters in the range of A to Z
0, 1 - Must match these numbers exactly
- - Must match - exactly
使用它,我们可以轻松检查任何值,看它是否是双绞线:
Dim TwistedPairPattern as String
TwistedPairPattern = "#####[A-Z][A-Z][A-Z]0010-[A-Z][A-Z][A-Z]"
Dim NonTwistedCode as String
NonTwistedCode = "12345XXX0001-WHT"
Debug.Print NonTwistedCode Like TwistedPairPattern
' Result is False
Dim TwistedCode as String
TwistedCode = "12345XXX0010-BLU"
Debug.Print TwistedCode Like TwistedPairPattern
' Result is True
这为您提供了所需的匹配逻辑,并允许您根据需要编辑模式。
您可以在此处详细了解Like
运算符:https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/like-operator
或https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/like-operator
从那里,你只需要编写逻辑来使用这种比较来创建连接。
编辑:您可能需要根据您的评论调整模式。如果我理解你的评论你会想要更多的东西:
12345[A-Z][A-Z][A-Z]441*
(我使用了第二种模式)。这将匹配任何代码,其中前5个字符是'12345',后跟三个大写字母,'441',然后是零个或多个字符(因为它可能有另一个数字)。