小编And*_*nov的帖子

如何在单元格和循环中使用Microsoft Excel中的正则表达式(正则表达式)

如何在Excel中使用正则表达式并利用Excel强大的网格设置进行数据操作?

  • 单元格函数返回匹配的模式或替换字符串中的值.
  • Sub循环遍历一列数据并提取匹配到相邻单元格.
  • 需要什么设置?
  • Excel的正则表达式的特殊字符是什么?

我的理解正则表达式是不理想的许多情况下(使用或不使用正则表达式?),因为Excel可以使用Left,Mid,Right,Instr类型相似的操作命令.

regex excel vba

548
推荐指数
8
解决办法
82万
查看次数

使用VBA循环文件夹中的文件?

我想在Excel 2010中使用循环遍历目录的文件.

在循环中,我将需要

  • 文件名,和
  • 文件格式化的日期.

我编写了以下代码,如果该文件夹没有超过50个文件,则工作正常,否则它是非常慢的(我需要它与> 10000文件的文件夹一起使用).这段代码唯一的问题是查找操作file.name需要花费很多时间.

代码有效,但waaaaaay太慢(每100个文件15秒):


Sub LoopThroughFiles()
   Dim MyObj As Object, MySource As Object, file As Variant
   Set MySource = MyObj.GetFolder("c:\testfolder\")
   For Each file In MySource.Files
      If InStr(file.name, "test") > 0 Then
         MsgBox "found"
         Exit Sub
      End If
   Next file
End Sub
Run Code Online (Sandbox Code Playgroud)

问题解决了:

  1. 我的问题已通过以下解决方案Dir以特定方式(15000个文件为20秒)和使用该命令检查时间戳来解决FileDateTime.
  2. 考虑到下面的另一个答案,20秒减少到不到1秒.

excel vba excel-2010

224
推荐指数
5
解决办法
60万
查看次数

在VBA中查找上次使用的单元格时出错

当我想找到最后使用的单元格值时,我使用:

Dim LastRow As Long

LastRow = Range("E4:E48").End(xlDown).Row

Debug.Print LastRow
Run Code Online (Sandbox Code Playgroud)

当我将单个元素放入单元格时,输出错误.但是当我在单元格中放入多个值时,输出是正确的.这背后的原因是什么?

excel vba excel-formula

168
推荐指数
9
解决办法
11万
查看次数

.text,.value和.value2有什么区别?

我不是要求任何脚本的帮助,但我的问题是要澄清.最近我在Excel中做了很多VB脚本,所以我在这个问题上真的指的是Excel..text,.value和.value2有什么区别?我应该何时使用target.text,target.value和target.value2?我从未使用过value2选项,但仍想知道它的用途.

有时如果我使用.text它会给我一个错误,当我只检查或操作单元格中的文本时,我需要使用.value.然后有时我认为我应该使用.value我得到一个错误,我需要使用.text.通常它接受或不接受问题,但有时它会产生影响.我知道必须有一些逻辑,但我似乎无法弄明白.

我还发现,如果你只是将它保留为目标而不指定.text或.value它最初会起作用,但是有人做的事情最终会导致脚本出错,所以总是最好在它上面使用.something .我想我要问的是,是否有人可以给我一些指导方针,经验法则,如何正确使用每一个以及何时需要使用它.

谢谢你们的解释.我更了解它.它们都是很好的解释.下面是我的一些代码的一个小例子.我认为它应该是target.text,但它会出错,所以当我使用target.value时它会起作用.

If LCase(Target.Value) = LCase("HLO") And Target.Column = 15 Then
    Target.Value = "Higher Level Outage"
End If
Run Code Online (Sandbox Code Playgroud)

我仍然有点困惑,因为当我想到价值或价值2时,特别是在你提供的答案之后,我认为它们只应该用于数字.但是,在我的例子中,我正在谈论严格的文本,这是我的脚本所指的很多(单元格中的文本,比数字更多).

excel vba

166
推荐指数
4
解决办法
21万
查看次数

将列号转换为字母的功能?

有没有人有一个Excel VBA函数可以从一个数字返回列字母?

例如,输入100应该返回CV.

excel vba excel-udf

134
推荐指数
11
解决办法
39万
查看次数

如何在VBA中使用FileSystemObject?

有什么我需要参考的吗?我该如何使用:

Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为它无法识别这些对象.

excel vba filesystemobject

105
推荐指数
3
解决办法
33万
查看次数

如何在vba中的字符串中加双引号?

我想通过包含双引号的vba在单元格中插入if语句.

这是我的代码:

Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
Run Code Online (Sandbox Code Playgroud)

由于双引号,我在插入字符串时遇到问题.我该如何处理双引号?

excel vba double-quotes

103
推荐指数
4
解决办法
40万
查看次数

测试或检查是否存在纸张

Dim wkbkdestination As Workbook
Dim destsheet As Worksheet

For Each ThisWorkSheet In wkbkorigin.Worksheets 
    'this throws subscript out of range if there is not a sheet in the destination 
    'workbook that has the same name as the current sheet in the origin workbook.
    Set destsheet = wkbkdestination.Worksheets(ThisWorkSheet.Name) 
Next
Run Code Online (Sandbox Code Playgroud)

基本上,我遍历原始工作簿中的所有工作表,然后destsheet在目标工作簿中将其设置为与原始工作簿中当前迭代的工作表相同的工作表.

如何测试该表是否存在?就像是:

If wkbkdestination.Worksheets(ThisWorkSheet.Name) Then 
Run Code Online (Sandbox Code Playgroud)

excel scripting vba

102
推荐指数
9
解决办法
43万
查看次数

检测Excel工作簿是否已打开

在VBA中,我以编程方式打开了名为"myWork.XL"的MS Excel文件.

现在我想要一个可以告诉我其状态的代码 - 无论是否开放.就是这样的IsWorkBookOpened("myWork.XL)

excel vba

67
推荐指数
5
解决办法
31万
查看次数

在Excel中使用UDF更新工作表

这不是一个问题,而是发布此评论,因为我不记得以前看过这种方法.我回答了对之前回答的评论,并尝试了以前我没有尝过的事情:结果很有趣所以我虽然把它作为一个独立的问题发布,但我自己的回答.

在SO(以及许多其他论坛)上出现了许多关于"我的用户定义函数有什么问题"的问题,答案是"你无法从UDF更新工作表" - 这里的限制:

Excel中自定义函数的限制说明

有一些方法可以解决这个问题,例如,请参阅此处(https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell)但我不要以为我的确切方法就在其中.

另请参阅:从UDF更改单元格注释

excel vba

63
推荐指数
2
解决办法
5254
查看次数