还有另一个问题。
我正在工厂中创建另一个Excel工具,目前我从采购订单跟踪网站中提取数据并过滤掉多余的数据,仅留下采购标签本身,单引号和结尾括号。我需要删除引号和结尾括号,所以我只有PO本身,因为我需要将此PO注入另一个站点的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
希望这是有道理的。
快速说明,PO的长度会随着时间的流逝而变化,因此,我想尽可能使它动态。谢谢您的帮助。
答案 0 :(得分:2)
用于使文本成为URL友好的功能预期如何? :)
=ENCODEURL(A1)
例如,此:
1234ABCD']
...被编码为:
1234ABCD%27%5D
...准备插入查询参数(URL)字符串中。请参阅下面的链接中的文档,包括更多示例。
LEFT
也就是说,还有其他几种方法可以做到这一点。
您说过“替换”,但看起来您只需要剪掉最后两个字符?
这会剪切A1
中文本的最后2个字符:
=LEFT(A1,LEN(A1)-2)
SUBSTITUTE
功能如果要做要在单元格中“替换”文本,则可以使用SUBSTITUTE
:
示例:
如果单元格A1
包含:
1234ABCD']
...您可以输入另一个单元格:
=SUBSTITUTE(A1,"]","")
...仅删除]
。您还可以嵌套功能。要同时删除{{1}的]
和,请使用以下公式:
'
=SUBSTITUTE(SUBSTITUTE(A1,"]",""),"'","")
函数语法:
SUBSTITUTE
SUBSTITUTE(
text, old_text, new_text, [instance_num]
)
函数语法具有以下参数:
SUBSTITUTE
-(必需)文本或对包含要替换字符的文本的单元格的引用。 Text
-(必需)您要替换的文本。 Old_text
-(必需)您要替换为New_text
的文本。 old_text
-(可选)指定要替换为Instance_num
的{{1}}。如果指定old_text
,则仅替换new_text
的该实例。否则,文本中每次出现的instance_num
都将更改为old_text
。ENCODEURL
function (Excel) MID
, LEN
, and FIND
functions to extract certain cell portions? SUBSTITUTE
Function LEFT
, RIGHT
and MID
formulas in Excel 答案 1 :(得分:1)
您的问题不应该与修复从某些来源提取的数据有关。确实应该与修复检索过程有关,这样您就不会得到流氓字符。
话虽如此,该子过程应迅速从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