小编Gar*_*ent的帖子

删除子字符串但保留格式

我有一小段代码将从我选择的单元格中删除子串垃圾:

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)

代码有效,但它会破坏单元格中保留的字符的格式.所以,如果我开始:

在此输入图像描述

我最终得到:

在此输入图像描述



有没有办法避免干扰仍然存在的字符的格式?

excel vba excel-vba

4
推荐指数
1
解决办法
110
查看次数

比较格式化的两个单元格

我被要求从工作簿中删除单行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()的公式替换?

excel vba excel-vba

4
推荐指数
1
解决办法
31
查看次数

Application.InputBox 的枚举

每当我使用时,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)

我更容易记住枚举而不是任意整数。

excel vba

3
推荐指数
1
解决办法
255
查看次数

关闭立即窗口 - VBA

在VBA窗口处于活动状态时,我可以通过两种方式打开立即窗口(实际上是一个窗格):

  • 使用鼠标 - 在菜单栏上 - 查看>立即窗口
  • 用键盘 - 触摸Ctrl+g

我可以通过单击Window右上角的红色"x"来用鼠标关闭立即窗口.

如何使用键盘(不使用鼠标)关闭立即窗口(仅底部窗格)

excel vba excel-vba

3
推荐指数
1
解决办法
714
查看次数

VBA Excel中-查找字符串通配符

我正在用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)

有任何想法吗?

谢谢

string excel vba wildcard

2
推荐指数
1
解决办法
1万
查看次数

在字符串末尾获取数字

字符串是混合的字母和数字,但字符串末尾总是有一组数字.

应忽略字符串中间的任何前导数字或数字.我提出了:

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.是否有一个公式得到相同的结果?
提前致谢

excel

2
推荐指数
1
解决办法
101
查看次数

获取枚举的文本等效项

我试图在工作表中创建一些简单的表,提供常见枚举的数字等效,如:

在此输入图像描述

此示例适用于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 vba enumeration excel-vba

2
推荐指数
1
解决办法
297
查看次数

TEXTJOIN输出的逆序

我被要求从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 vba excel-formula

2
推荐指数
1
解决办法
49
查看次数

Excel VBA:如果列A包含字符串中的数字,则删除行

我试图在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)

excel vba excel-vba

1
推荐指数
1
解决办法
756
查看次数

计算字符串的子字符串

我有一个小宏,它创建输入字符串的所有可能的有序子串.所以如果输入字符串是:

A B C D

10个子串是:

ab abc abcd b bc bcd c cd d

是否有一个公式来计算输入字符串长度的子串数?

excel vba excel-vba

0
推荐指数
1
解决办法
428
查看次数

Excel公式提取是

我有一个带有不同列的excel表,所有列都有值YesNo.我想在我的最后一列中提取一个提取所有前一列结果的公式.

如果所有值都是No,则结果必须No 是一个或多个值Yes,结果应为Yes

我不知道我可以用哪种配方.有人可以帮忙吗?

excel

0
推荐指数
1
解决办法
67
查看次数

标签 统计

excel ×11

vba ×9

excel-vba ×6

enumeration ×1

excel-formula ×1

string ×1

wildcard ×1