首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >宏VBA -比较两个字符串的相似数字

宏VBA -比较两个字符串的相似数字
EN

Stack Overflow用户
提问于 2016-04-04 02:06:48
回答 3查看 74关注 0票数 0

我是新在宏观VBA,我正面临一个问题。

我有两个字符串要比较,如果在两个字符串中找到相似的数字,如何得到结果?

字符串1: 1,2,3,4,6,7,8,9,10,11,12,13,19,20

字符串2: 2,3,7,8,9,10,11

经比较后:

结果:2,3,7,8,9,10 11

代码:

代码语言:javascript
运行
复制
If ActiveSheet.Cells(irow + 1, 12).Value = "" Then

    'MsgBox "Data not found"
Else
    temp = vbNullString
    temp = ActiveSheet.Cells(irow + 1, 12).Value
    'expanddata() use to expend a sequence of numbers into a display string as below
    ' 1,2-4,6 -> 1,2,3,4,6
    temp = expanddata(temp) 

    If Worksheets("AI").Cells(irow + 1, 10).Value = temp Then
        temp = ConvNum(temp) 'if whole string same then convert back to 1,2-4,6
    Else
        'the comparision make in here        
    End If
Worksheets("AI").Cells(irow + 1, 10) = temp

End If

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-04-06 03:16:38

自动化powershell将列表打印到文本文件c:\temp\test.txt

代码语言:javascript
运行
复制
Sub Test()
a = "(1,2,3,4,6,7,8,9,10,11,12,13,19,20)"
b = "(2,3,7,8,9,10,11)"
cmd = Shell("powershell.exe """ & a & """ | Where {""" & b & """ -Contains $_}  | out-file c:\temp\test.txt", 1)
End Sub
票数 1
EN

Stack Overflow用户

发布于 2016-04-04 07:04:54

请试试下面的代码。

代码语言:javascript
运行
复制
Sub comparestring()
    string1 = "1,2,3,4,6,7,8,9,10,11,12,13,19,20"
    string2 = "2,3,7,8,9,10,11"
    str1 = Split(string1, ",")
    str2 = Split(string2, ",")
    For i = 0 To UBound(str1)
        For j = 0 To UBound(str2)
            If str1(i) = str2(j) Then
                If matchedcontent <> "" Then
                    matchedcontent = matchedcontent & "," & str1(i)
                Else
                    matchedcontent = str1(i)
                End If
            End If
        Next j
    Next i
    Range("A3").Value = matchedcontent
End Sub

将这两个字符串赋值为字符串1和字符串2,如下所示,结果将在单元格A3中打印

代码语言:javascript
运行
复制
string1=Activesheet.Range("A1").Value
string2=Activesheet.Range("A2").Value
票数 0
EN

Stack Overflow用户

发布于 2016-04-04 07:11:37

尝尝这个

代码语言:javascript
运行
复制
Option Explicit

Function CompareStrings(string1 As String, string2 As String) As String
Dim s As Variant

For Each s In Split(string1, ",")
    If "," & string2 & "," Like "*," & s & ",*" Then CompareStrings = CompareStrings & s & ","
Next s

CompareStrings = Left(CompareStrings, Len(CompareStrings) - 1)
End Function

可以按以下方式调用

代码语言:javascript
运行
复制
Sub main()

Dim string1 As String, string2 As String, stringRes As String

string1 = "1,2,3,4,6,7,8,9,10,11,12,13,19,20"
string2 = "2,3,7,8,9,10,11"

stringRes = CompareStrings(string1, string2)

MsgBox stringRes
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36393582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档