Excel 将单元格格式化为仅显示X个字符之后的字符
需要的不是从右边接收前12个字符,而是同一个单元格中没有前12个字符Excel 将单元格格式化为仅显示X个字符之后的字符,excel,vba,Excel,Vba,需要的不是从右边接收前12个字符,而是同一个单元格中没有前12个字符 Dim arrData As Variant, LastRow As Long, i As Long, ws As Worksheet Set ws = ThisWorkbook.Sheets("Long List 15032019") 'change the name of the sheet to the one you are doing the code With ws LastRo
Dim arrData As Variant, LastRow As Long, i As Long, ws As Worksheet
Set ws = ThisWorkbook.Sheets("Long List 15032019") 'change the name of the sheet to the one you are doing the code
With ws
LastRow = .Cells(.Rows.Count, 3).End(xlUp).Row
arrData = .Range("A2", .Cells(LastRow, "C")).Value
For i = 1 To UBound(arrData)
If arrData(i, 3) Like "Bus*" Then
arrData(i, 1) = "BU CRM"
Else
arrData(i, 1) = "CSI ACE"
End If
If arrData(i, 3) Like "CSI*" Or arrData(i, 3) = vbNullString Then
arrData(i, 2) = vbNullString
Else: arrData(i, 2) = Right(arrData(i, 3), 12)
End If
Next i
.Range("A2", .Cells(LastRow, "C")).Value = arrData
End With
i、 e.如果C3=“示例(ID:15654534)”那么B3=“(ID:15654534)”或者如果C3=“示例(ID:152)”那么B3=“(ID:152)”
我确实尝试过使用Left或-12。但结果并不是我所需要的。
我希望这能澄清我的问题
谢谢听起来你想要一个正则表达式。在这种情况下,你会
arrData(i,2) = GetId(arrData(i, 3) , "ID:\d+")
代码:
这可以在没有VBA的情况下完成,但前提是输入是相同的结构。您现在的数据是: 文本(idnumber),并且您只希望获取包含两个括号的部分(idnumber) 只有在数据结构相同的情况下,此公式才有效。如果输入更改了某些内容,则无法正常工作(例如,如果缺少第一个括号,则无法正常工作) 我使用的公式是:
=MID(C1;SEARCH("(";C1;1);SEARCH(")";C1)-SEARCH("(";C1;1)+1)
我的数据示例:
希望您能根据自己的需要调整它。因此,我在第3列中的代码有两种可能。它给了我“示例(ID:15654534)”或“示例(ID:152)”。目标是列只显示“(ID:XXX)”您只需要较短的字符吗?两者都是,我希望第2列=第3列,不带第一个X字符,在本例中为“示例”。所以,如果C3是“示例(ID:15654534)”,那么B3(ID:15654534)”或者如果C3是“示例(ID:152)”,那么B3(ID:152)”我看不出有什么区别。在这两种情况下,你都能抓住所有的线索。听起来你想要一份工作regex@QHarr,阅读OP之前的评论,当他/她说“示例(ID:152)”然后是B3(ID:152)”时,我认为OP需要在resultWelcome中包含两个括号。在你的帖子中,你说我希望我的单元格是最后14个字符,但后来在@QHarr的回复中,你说我希望第2列=第3列,不带第一个X字符,在这种情况下是“示例”。因此,如果C3是“示例(ID:15654534)”,那么B3(ID:15654534)”或者如果C3是“示例(ID:152)”,那么B3(ID:152)”是完全不同的。请编辑您的问题,添加您想要的内容、输入、预期输出和您尝试过的内容。帮助社区帮助你:)谢谢你的评论,我现在就这么做。你们可以想象,我是VBA的新手,这是我的第一个项目。谢谢你的帮助,我以前也问过类似的问题。但是对于这个特殊的任务,我需要使用VBA来代替。
=MID(C1;SEARCH("(";C1;1);SEARCH(")";C1)-SEARCH("(";C1;1)+1)