繁体   English   中英

vba excel:如何将字符从一个单元格复制到另一个单元格

[英]vba excel: how to copy characters from a cell to another

我是 VBA 世界的新手,我正在学习您的建议。

我已经寻找了几种解决方案,尝试了它们,但它们并不适合我的问题。

这是链接

使用 VBA 在单元格中查找字符串

如何使用 Excel VBA 计算单元格中特定字符的数量

VBA 中的哪个命令可以计算字符串变量中的字符数?

我需要的是检查Input的字符并与Match list key匹配的可能性。 匹配字符串后,复制输出中的字符 I。

这里和工作表中的例子

如您所见,第一行很容易匹配,但在A8单元格中(例如)有一个包含 14 个字符的字符串。 在这种情况下,我需要的是,当有一个以 CMXXAB 开头的字符串时,匹配的是 WT(总是!)。 当我们有 A12 时也会发生同样的事情:它以 ETRxxx 开头,匹配后将在输出中开始,如 JAZZ。

我认为这会帮助你:

Option Explicit

Sub test()

    Dim LastrowA As Long, i As Long, AppearA As Long, AppearB As Long
    Dim strA As String, strB As String


    With ThisWorkbook.Worksheets("Sheet1")

        LastrowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastrowA

            strA = .Range("A" & i).Value
            strB = .Range("C" & i).Value

            'Check if strA appears in strB
            AppearA = InStr(1, strB, strA)
            If AppearA > 0 Then
                .Range("B" & i).Value = strA
                Exit For
            End If

            'Check if strB appears in strA
            AppearB = InStr(1, strA, strB)
            If AppearB > 0 Then
                .Range("B" & i).Value = strB
                Exit For
            End If

        Next i

    End With

End Sub

非常感谢您的帮助。 几天后,我在我的问题中找到了问题的解决方案。 事实上,这是我的解决方案,我希望能够帮助任何需要这样的人。

Sub AssociazioneRotabiliPerPivot()

Dim LastrowA, LastrowC As Long, i, j As Long, AppearA As Long, AppearB As Long
Dim strA As String, strB As String

With ThisWorkbook.Worksheets("sheet1")

    LastrowA = .Cells(.Rows.count, "A").End(xlUp).Row
    LastrowC = .Cells(.Rows.count, "C").End(xlUp).Row

    For j = 1 To LastrowC   

        For i = 1 To LastrowA   

            strA = .Range("A" & i).Value
            strB = .Range("C" & j).Value

            AppearC = InStr(1, strA, strB)
            If AppearB > 0 Then
                .Range("B" & i).Value = strB
            End If

            If (InStr(1, strA, "CM") Or InStr(1, strA, "C4551R")) > 0 Then

                .Range("B" & i).Value = "WT"   

            ElseIf InStr(1, strA, "ETR425") > 0 Then   

                .Range("B" & i).Value = "JAZZ"  

            End If

        Next i

    Next j

End With

结束子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM