Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将单元格格式化为仅显示X个字符之后的字符_Excel_Vba - Fatal编程技术网

Excel 将单元格格式化为仅显示X个字符之后的字符

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

需要的不是从右边接收前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
        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)