[英]vba excel: how to copy characters from a cell to another
我是 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.