Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
String VBA查找单元格中的数字、字母和字符,并仅用数字/字母替换单元格内容_String_Vba_Excel - Fatal编程技术网

String VBA查找单元格中的数字、字母和字符,并仅用数字/字母替换单元格内容

String VBA查找单元格中的数字、字母和字符,并仅用数字/字母替换单元格内容,string,vba,excel,String,Vba,Excel,还有一个问题 我正在我的工厂里创建另一个Excel工具,目前我所拥有的工具从采购订单跟踪网站中提取数据,过滤掉多余的数据,只留下采购订单标签本身、一个单引号和一个结束括号。我需要删除引号和结束括号,所以我只有采购订单本身,因为我需要这个注入到另一个网站的URL。我已经尝试在我编写的一些代码中使用通配符,但是PO将被几个星号代替,也就是“通配符”。我可能忽略了一些显而易见的事情,但我想不出来 数据示例: 代码示例: Sub Filter_DockMaster_Data2() Dim Main

还有一个问题

我正在我的工厂里创建另一个Excel工具,目前我所拥有的工具从采购订单跟踪网站中提取数据,过滤掉多余的数据,只留下采购订单标签本身、一个单引号和一个结束括号。我需要删除引号和结束括号,所以我只有采购订单本身,因为我需要这个注入到另一个网站的URL。我已经尝试在我编写的一些代码中使用通配符,但是PO将被几个星号代替,也就是“通配符”。我可能忽略了一些显而易见的事情,但我想不出来

数据示例:

代码示例:

Sub Filter_DockMaster_Data2()

Dim Main As Worksheet
    Set Main = Worksheets("Main")
Dim ISA_List As Worksheet
    Set ISA_List = Worksheets("ISA_List")
Dim ISA_Results As Worksheet
    Set ISA_Results = Worksheets("ISA_Results")
Dim ISA_Raw As Worksheet
    Set ISA_Raw = Worksheets("ISA_Raw")

Worksheets("ISA_Results").Select
Range("A1").Select
    Do Until IsEmpty(ActiveCell)
        ActiveCell.replace What:="********"" ]", Replacement:="********", LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        ActiveCell.Offset(1, 0).Select
    Loop

End Sub
希望这是有道理的

快速笔记,采购订单的长度将随着时间的推移而变化,所以如果可能的话,我想让它变得动态。非常感谢您的帮助。

请为URL编码 使文本URL友好的功能如何?:)

例如,这:

1234ABCD']
…编码为:

1234ABCD%27%5D
…准备插入查询参数(URL)字符串。请参阅以下链接中的文档,包括更多示例


文本功能,如
LEFT
也就是说,还有其他几种方法可以做到这一点

你说了“替换”,但看起来你只需要剪掉最后两个字符

这将剪切
A1
中文本的最后两个字符:

=LEFT(A1,LEN(A1)-2)

替换
功能 如果确实要“替换”单元格中的文本,可以使用
SUBSTITUTE

示例:

如果单元格
A1
包含:

1234ABCD']
…您可以在另一个单元格中输入:

=SUBSTITUTE(A1,"]","")
…这将只删除
]
。您还可以嵌套函数。要同时删除
]
'
,请使用以下公式:

=SUBSTITUTE(SUBSTITUTE(A1,"]",""),"'","")

替换函数语法:

替换(
 <代码>文本,旧文本,新文本,[实例数] <代码>)
SUBSTITUTE
函数语法具有以下参数:

  • Text
    -(必选)包含要替换字符的文本的文本或对单元格的引用
  • Old_text
    -(必需)要替换的文本
  • New\u text
    —(必需)要替换的
    old\u text
    文本
  • Instance\u num
    -(可选)指定要替换为
    新文本的
    旧文本的出现。如果指定
    instance\u num
    ,则仅替换
    旧文本的该实例。否则,文本中每次出现的
    old\u text
    都会更改为
    new\u text
()


更多信息:
  • Microsoft支持:
  • 堆栈溢出:
  • Microsoft支持:
  • 杰特里:
  • Microsoft支持:

    • 您的问题不应该是修复从某个来源提取的数据。它真的应该是关于修复检索过程,这样你就不会得到流氓字符

      这么说来,这个子过程应该可以快速地从A列中删除任何流氓角色

      Option Explicit
      
      Sub posOnly()
      
          Dim i As Long, str As String, rgx As Object
      
          Set rgx = CreateObject("VBScript.RegExp")
          'pattern for A-Z (case sensitive) or 0-9 exactly 8 characters/digits in length
          rgx.Pattern = "[A-Z0-9]{8}"
      
          With Worksheets("ISA_Results")
              For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
                  str = .Cells(i, "A").Value2
                  If rgx.Test(str) Then
                      str = rgx.Execute(str).Item(0)
                      .Cells(i, "A") = str
                  End If
              Next i
          End With
      
      End Sub
      

      这是一大堆有用的信息,谢谢。老实说,我甚至不知道有一个函数可以自动将文本转换为URL可读。我在这个职位上只呆了几个星期,我的训练不是最好的。这是难以置信的帮助,所以再次感谢你!
      Option Explicit
      
      Sub posOnly()
      
          Dim i As Long, str As String, rgx As Object
      
          Set rgx = CreateObject("VBScript.RegExp")
          'pattern for A-Z (case sensitive) or 0-9 exactly 8 characters/digits in length
          rgx.Pattern = "[A-Z0-9]{8}"
      
          With Worksheets("ISA_Results")
              For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
                  str = .Cells(i, "A").Value2
                  If rgx.Test(str) Then
                      str = rgx.Execute(str).Item(0)
                      .Cells(i, "A") = str
                  End If
              Next i
          End With
      
      End Sub