gpt4 book ai didi

excel - 只知道一定数量的字符时替换一串文本

转载 作者:行者123 更新时间:2023-12-04 21:50:27 25 4
gpt4 key购买 nike

我有一个采购订单号码列表。它们看起来像(4010059877-TUR36036133 或 TUR6039716## 4010073239)。我需要能够将单元格缩小到仅 PO 编号,即 4010059877 编号。关于我要排除的部分的唯一一致部分是“TUR########”。

我研究过排除所有非数字字符的代码,但有些单元格有这些“TUR #'s”。我进行了查找并用通配符“*”替换。我也在网上搜索过,没有看到类似的东西。

查找并替换尝试的代码

Sub Replace()

Columns("AJ").Replace What:="TUR*", _
Replacement:="", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False
End Sub

替换所有在 TUR 后面留下不需要的数字的非数字字符########
Dim finRow As String
finRow = Sheets("Data").Range("A20000").End(xlUp).Row

Set myRange = Sheets("Data").Range("AK2:AK" & finRow)
For Each myCell In myRange
LastString = ""
For I = 1 To Len(myCell.Value)
mT = Mid(myCell.Value, I, 1)
If mT Like "[0-9]" Then
tString = mT
Else
tString = ""
End If
LastString = LastString & tString
Next I
myCell.Value = LastString
Next

我的预期结果是 TUR######## 将被消除并替换为空。

最佳答案

您可以使用 InStr() 函数,然后使用它来支持 Left,例如:

loc = instr(mycell,"TUR")
val = left(mycell.value,loc-1)

编辑1:

由于 SJR 的评论,将添加一个在位置 1 中找到“TUR”时处理问题的示例:
loc = instr(mycell,"TUR")
if loc = 1 then
val = ""
else
val = left(mycell.value,loc-1)
end if

编辑2:
Dim val as long 'assumes you will only have a number in the end
val = right(left(mycell.value,12),11)
mycell.value = val

这应该切断第一个括号,并且 11 位 PO 之后的信息没有问题。如果您有其他可能的情况,这甚至可能特定于 instr(mycell.value,"TUR") 为真的情况(开关)。

关于excel - 只知道一定数量的字符时替换一串文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com