我有一小段代码将从我选择的单元格中删除子串垃圾:
Sub RemoveJunk()
Dim r As Range
For Each r In Selection
r.Value = Replace(r.Value, "junk", "")
Next r
End Sub
Run Code Online (Sandbox Code Playgroud)
代码有效,但它会破坏单元格中保留的字符的格式.所以,如果我开始:

我最终得到:

有没有办法避免干扰仍然存在的字符的格式?
我被要求从工作簿中删除单行UDF()以便于将工作簿移动到无宏环境.的UDF()比较两个细胞"为格式化":
Public Function fEXACT(r1 As Range, r2 As Range) As Boolean
fEXACT = (r1.Text = r2.Text)
End Function
Run Code Online (Sandbox Code Playgroud)
我不关心字体,对齐等.如果重要,目标环境将是Excel 365.不会:
=D3=E3
=EXACT(D3,E3)
Run Code Online (Sandbox Code Playgroud)
工作.是否有UDF()的公式替换?
每当我使用时,Application.InputBox()我都会调出 VBA 帮助来提醒我Type使用哪个:
Sub MAIN()
Dim s As String
s = Application.InputBox(Prompt:="enter data", Type:=2)
End Sub
Run Code Online (Sandbox Code Playgroud)
是否存在,或者我可以创建一个枚举,Type以便我可以编写如下代码:
Sub MAIN()
Dim s As String
s = Application.InputBox(Prompt:="enter data", Type:=vbString)
End Sub
Run Code Online (Sandbox Code Playgroud)
我更容易记住枚举而不是任意整数。
在VBA窗口处于活动状态时,我可以通过两种方式打开立即窗口(实际上是一个窗格):
我可以通过单击Window右上角的红色"x"来用鼠标关闭立即窗口.
如何仅使用键盘(不使用鼠标)关闭立即窗口(仅底部窗格)?
我正在用excel做一个简单的搜索引擎,我想制作一些通配符,例如:
我有一个单元格,用户在其中输入看起来像这样的搜索词(仅数字):“ 123456”。然后,我还有另一本工作簿,在其中精确搜索“ 123456”。我设法做到了。
但是,如何制作通配符?例如,我希望用户能够搜索:“ 123?56”,然后给他结果:“ 123456”,“ 123356”,“ 123556”等。
这就是我寻找完全匹配的方式:
set rFound = wks.UserRange.Find(strToSearch, LookIn:=xlValues, lookat:=xlwhole, MatchCase:=False)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢
字符串是混合的字母和数字,但字符串末尾总是有一组数字.
应忽略字符串中间的任何前导数字或数字.我提出了:
Public Function trailing(S As String) As Long
Dim r As String
Dim i As Long
For i = Len(S) To 1 Step -1
If IsNumeric(Mid(S, i, 1)) Then
r = Mid(S, i, 1) & r
Else
Exit For
End If
Next i
trailing = CLng(r)
End Function
Run Code Online (Sandbox Code Playgroud)
它似乎工作:
但是,用户正在使用.xlsx并且无法使用UDF.是否有一个公式得到相同的结果?
提前致谢
我试图在工作表中创建一些简单的表,提供常见枚举的数字等效,如:
此示例适用于Border枚举变量.这个材料可以在MSDN中闲逛找到,但是当我不在线时我经常需要工作,这种类型的"帮助"不可用.
我目前正在用两个独立的循环填充我的小桌子:
Sub trythisB()
Dim i As Long
i = 1
For Each a In Array(xlInsideHorizontal, xlInsideVertical, xlEdgeLeft, xlEdgeRight, xlEdgeBottom, xlEdgeTop)
Cells(i, 2) = a
i = i + 1
Next a
End Sub
Sub trythisA()
Dim i As Long
i = 1
For Each a In Array("xlInsideHorizontal", "xlInsideVertical", "xlEdgeLeft", "xlEdgeRight", "xlEdgeBottom", "xlEdgeTop")
Cells(i, 1) = a
i = i + 1
Next a
End Sub
Run Code Online (Sandbox Code Playgroud)
我真的想避免保留两个独立的数组; 一个用于文本字符串,另一个用于枚举.
有没有办法从文本字符串中获取枚举,或者将枚举转换为文本字符串?
任何建议将不胜感激.
我被要求从Excel工作簿中删除Excel VBA UDF。这是为了使工作簿在无宏的环境中运行。
该代码颠倒了逗号分隔字符串中项目的顺序。代码非常简单:
Public Function FlipIt(Sin As String) As String
Dim a, arr
FlipIt = ""
arr = Split(Sin, ",")
For Each a In arr
FlipIt = a & "," & FlipIt
Next a
FlipIt = Left(FlipIt, Len(FlipIt) - 1)
End Function
Run Code Online (Sandbox Code Playgroud)
它在工作表中使用,例如:
=flipit(TEXTJOIN(",",TRUE,A1:A6))
Run Code Online (Sandbox Code Playgroud)
我写代码是因为我无法弄清楚如何以TEXTJOIN()相反的顺序进行输出。
我能想到的最好的方法是使用一个帮助器列。因此,在D1中,我输入:
=IF(ROWS($1:1)>COUNTA(A:A),"",INDEX(A:A,COUNTA(A:A)-ROWS($1:1)+1))
Run Code Online (Sandbox Code Playgroud)
并向下复制。使用:
=TEXTJOIN(",",TRUE,D1:D6)
Run Code Online (Sandbox Code Playgroud)
我不相信这种简单的事情需要“帮助”列。
有什么建议么??
我试图在Excel中编写一个公式,如果列C中的单元格包含单元格中的数字,除了数字0 ,则删除整行.
例如
A2 - delete
A0 - don't delete
M - don't delete
ABC6 - delete
NN - don't delete
Sub FindInvalid()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
Dim JEType As Variant
InvalidCharacters= Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With ActiveSheet
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = …Run Code Online (Sandbox Code Playgroud) 我有一个小宏,它创建输入字符串的所有可能的有序子串.所以如果输入字符串是:
A B C D
10个子串是:
ab abc abcd b bc bcd c cd d
是否有一个公式来计算输入字符串长度的子串数?
我有一个带有不同列的excel表,所有列都有值Yes或No.我想在我的最后一列中提取一个提取所有前一列结果的公式.
如果所有值都是No,则结果必须No
是一个或多个值Yes,结果应为Yes
我不知道我可以用哪种配方.有人可以帮忙吗?