我正在自动执行我必须做的更新,并且我要编写的宏的一部分需要来自填充内容的特定文本。 我在同一列中有以下几种类型的文本,包含数百行:
ScreenRecording ^的 naushi02 ^ PROCR ^ 10035
PROCR ^ 10635 ^ ScreenRecording ^的 misby01
ScreenRecording ^的 liw03 ^ PROCR ^ 10046
我粗体我需要的文字。我想用我需要的东西替换整个文本,或者在下一列,同一行中放置我需要的东西。
在我意识到格式存在差异之前,我已经写了一些可以工作60行的东西。对于主要的,这一切都是一样的,这就是我一开始没有意识到的原因,我花了很多时间浪费时间写一些现在没用的东西......所以我请求专家帮助。
一旦我从第一行得到了我需要的东西,我需要向下移动直到最后一个条目重复。
我有一些显然没有完全运作的代码。
我考虑过在搜索中使用“ScreenRecording”文本以及我在键盘上找不到的特殊字符,然后尝试从该点复制所有文本,包括第二个数字字符。我不知道该怎么做,如果它能起作用,或者即使这是一个好主意,但因为我花了很多时间试图解决它,我需要一些帮助。
提前致谢
答案 0 :(得分:2)
如果您总是希望在单词' ScreenRecording`之后返回值,则可以使用以下函数来执行此操作。
如果需要,请将其包含在SubRoutine
中进行替换:
Function SplitScreenRecording(sInput As String) As String
Dim a As Variant
Const SDELIM As String = "^"
Const LOOKUP_VAL As String = "ScreenRecording"
a = Split(sInput, SDELIM)
If IsError(Application.Match(LOOKUP_VAL, a, 0)) Then
SplitScreenRecording = CVErr(2042)
Else
SplitScreenRecording = a(Application.Match(LOOKUP_VAL, a, 0))
End If
End Function
Sub ReplaceInPlace()
Dim rReplace As Range
Dim rng As Range
Set rReplace = Range("A1:A3")
For Each rng In rReplace
rng.Value = SplitScreenRecording(rng.Value)
Next rng
End Sub
答案 1 :(得分:0)
如果你想替换:
Sub main2()
Dim key As String
Dim replacementStrng As String
key = "ScreenRecording"
replacementStrng = "AAA"
With Worksheets("mysheet01").columns("A") '<--| change "mysheet01" and "A" to your actual sheet name and column to filter
.Replace what:=key & "^*^", replacement:=key & "^" & replacementStrng & " ^ ", LookAt:=xlPart
.Replace what:="^" & key & "^*", replacement:="^" & key & "^" & replacementStrng, LookAt:=xlPart
End With
End Sub
如果你想在下一栏中放置你需要的东西:
Sub main()
Dim myRng As Range
Set myRng = GetRange(Worksheets("mysheet01").columns("A"), "ScreenRecording^") '<--| change "mysheet01" and "A" to your actual sheet name and column to filter
myRng.Offset(, 1) = "value that I need to place in next row" '<--| change the right part of the assignment to what you need
End Sub
Function GetRange(rng As Range, key As String) As Range
With rng
.AutoFilter Field:=1, Criteria1:="*" & key & "*" '<--| apply current filtering
If Application.WorksheetFunction.Subtotal(103, .Cells) > 0 Then '<--| if there are visible cells other than the "header" one
With .SpecialCells(xlCellTypeConstants)
If InStr(.SpecialCells(xlCellTypeVisible).Cells(1, 1), key & "^") > 0 Then
Set GetRange = .SpecialCells(xlCellTypeVisible) '<--|select all visible cells
Else
Set GetRange = .Resize(.Parent.Cells(.Parent.Rows.Count, .Column).End(xlUp).row - 1).Offset(1).SpecialCells(xlCellTypeVisible) '<--|select visible rows other than the first ("headers") one
End If
End With
End If
.Parent.AutoFilterMode = False '<--| remove drop-down arrows
End With
End Function