从Col1和Col2中的文本在Col3中写入不匹配的数据

Saiyanthou

我有2组数据,一组是带有修订的零件编号列表(有些没有修订),而没有修订的相同零件列表。这些是管理员多年来手动输入的,现在我需要创建一组零件号为Revision的数据。

由于过去发生的任何精神错乱,修订版本可能会出现在零件号中的任意位置,每当我这样说时,我都会感到不寒而栗!

因此,我需要一次将一个字符串的字符串1与字符串2进行比较,并用差异填充临时字符串。字符串1将带有修订版本,字符串2将不带有修订版本,并且由于人为错误,字符串2可能不仅仅是省略了修订版本,因此需要显示这些内容以进行手动检查。

我发现了一些接近的内容,但是我对VBA的了解不足以使我继续前进。

Function WORDDIF(rngA As Range, rngB As Range) As String

Dim WordsA As Variant, WordsB As Variant
Dim ndxA As Long, ndxB As Long, strTemp As String

WordsA = Split(rngA.Text, " ")
WordsB = Split(rngB.Text, " ")

For ndxB = LBound(WordsB) To UBound(WordsB)
    For ndxA = LBound(WordsA) To UBound(WordsA)
        If StrComp(WordsA(ndxA), WordsB(ndxB), vbTextCompare) = 0 Then
            WordsA(ndxA) = vbNullString
            Exit For
        End If
    Next ndxA
Next ndxB

For ndxA = LBound(WordsA) To UBound(WordsA)
    If WordsA(ndxA) <> vbNullString Then strTemp = strTemp & WordsA(ndxA) & " "
Next ndxA

WORDDIF = Trim(strTemp)

End Function

我希望看到字符串中的每个字母都进行比较,一旦在字符串2中发现不匹配,就会用该不匹配填充修订字符串。比较将继续在字符串1的相同字母上进行,直到在字符串2中找到匹配项为止。例如:

String 1 = 123-2A3-456
String 2 = 123-23-456
Revision = A

String 1 = 123-2A3-456
String 2 = 123-23-46
Revision = A5
美久

像这样吗?

Function WORDDIF(rngA As Range, rngB As Range) As String

Dim WordsA As Variant, WordsB As Variant
Dim ndxA As Long, ndxB As Long, strTemp As String

Dim a As Integer
Dim b As Integer

a = Len(rngA.Text)
b = 1
txt = ""

For i = 1 To a

    If Mid(rngA.Text, i, 1) = Mid(rngB.Text, b, 1) Then
        b = b + 1
    Else
        txt = txt & Mid(rngA.Text, i, 1)
    End If

Next


WORDDIF = txt

End Function

演示:

在此处输入图片说明

注意:它只会将第一个字符串与第二个字符串进行比较,无反之。如果这是您的要求,则可以相应地操作当前代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据其他列的值计算 pandas 中的列(如果 col1<col2 和 col2 > col1,则 col3 = 1)

匹配来自 col2 中 col1 的 ID,如果该行的 col3 值小于在 col1 中匹配的行中的 col3 值,则取该行的值

InnoDB:(PK,col1,col2,col3)形式的覆盖索引是否冗余?

如何像在SQL中那样在C#中按小时格式(120:15:10)的行对行进行汇总/分组-如SELECT SUM(col1),col 2,col3 GROUP BY col2,col3

SQL - 如果 col1 的值期望为 0 并且 col2 的值除了 0 与 col3 的值相同,则值在一行中

Pyspark或Pandas-比较DF1的col1和DF2的col2并基于col2删除col1中的重复单词

SQL在通配符列上联接/如果表中的col1在col1和col2上联接,否则在col2上联接

给定匹配col1的值数组,numpy获取col2中的值

熊猫等效选择计数(distcolt col1,col2)按col3分组

当 count(distinct col1, col2, col3) 时,MySQL 是否正确处理空值

使用AWK分组| COL1和COL3

违反 PRIMARY KEY 约束 PK。无法在对象 (table1) 中插入重复键,重复键值为 (Col1, Col2, Col3, Col4)

查找 COL1 匹配但 COL2 不匹配的行并删除最旧的条目

以分组匹配 col1, col2 和 col2,col1 的方式同时分组两列

列出每个 col1 值和多个 col2 值的 col1 和 col2

从 CSV 文件打印第 n 列,其中 myScript.sh 读取表,并且列参数组合如下:“col1,col2,col3”在一个参数中

AWK脚本:查找Col2中每个元素在Col1中具有的匹配数

如何从表WHERE col1 +“” + col2 LIKE“ John D%”中创建SELECT col1,col2?

如何提取Col2与R中的任何Col1匹配的每一行

有什么更好的说法`col1 <IFNULL(col2,999999)`和`ORDER BY IFNULL(col3,999999)`?

从col1中的日期开始的awk组年和月,以及col2中的组之和

计算Col1在Col2中有多个具有不同数据的条目的条目数

在 Spark 数据帧 udf 中,像 struct(col1,col2) 这样的函数参数的类型是什么?

如果col2的内容不在col1中,则串联2个chr列

你如何在 col3 共享/重叠 col2 的地方返回 col2?

用 NA 替换 COL2 中的行值,其中 R 中的其他 COL3 值为 NA

如何“插入表1(col1,col2)值,从表2选择col1,从表3选择col2”

SQL Server:从{TABLE}中选择DISTINCT [COL1],其中[COL2] ='A'和[COL2] <>'B'

选择 Col1 "isnull" & Col2 "notnull" 的行