我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?
Posted
技术标签:
【中文标题】我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?【英文标题】:I have a list of excel filenames in the column A of my worksheet and I would like to remove the .xls and .xlsm tags from the filenames using VBA. How? 【发布时间】:2018-05-21 23:03:58 【问题描述】:I want to remove the .xls and .xlsm tags using the "." in the VBA logic, but I am a beginner in VBA and I am wondering how I can accomplish the objective ?
【问题讨论】:
谷歌vba split command
感谢您的回复,在这种情况下,我只对拆分和删除最后一个“。”之后的文本感兴趣。字符
然后阅读split
命令的文档,解决问题所需的所有信息都在那里。如果在彻底研究您的问题后,您仍然遇到特定问题,请通过minimal reproducible example 与我们分享您的代码以及您不理解的部分和您所做的研究,这样我们就可以知道您真正需要什么.
您甚至不需要 split 命令。只需替换文本。至少可以说,VBA 对于这项任务来说太过分了。如果您不知道如何自己解决 VBA 中的问题,最好先熟悉 Excel,然后再使用 VBA,这对于初学者来说可能非常不守规矩。
另外,要指出正确的方向,Excel 公式 =SUBSTITUTE(text, old_text, new_text)
就足够了。如果您想精确定位文件路径分隔符,请结合使用SEARCH
和LEFT
。以下是关于前一种方法的一些文档:exceljet.net/excel-functions/excel-substitute-function.
【参考方案1】:
应该这样做...只需传入您要从中提取的范围
Sub RemoveExtension(rng As Range)
' Declare your variables
Dim LR As Long
Dim i As Long
Dim str() As String
With rng
' Find the last row
LR = .Cells(.Rows.Count, 1).End(xlUp).Row
' Enter loop
For i = LR To 1 Step -1
If Not (IsEmpty(.Cells(i))) Then
' Extract and split text using "." as a delimiter
str() = Split(.Cells(i).Value, ".")
' Rewrite text in cell from first array variable in str()
.Cells(i).Value = str(0)
End If
Next i
End With
End Sub
你可以用另一个Sub
函数调用这个函数...下面的例子:
Sub Macro1()
' Change Range() to what every range you need
Call RemoveExtension(Range("A2:A10"))
End Sub
请记住,这仅适用于列,因此您不能传入Range("A1:C3")
【讨论】:
Sub RemoveExtension(rng As A2) ' 声明你的变量 Dim LR As Long Dim i As Long Dim str() As String With rng ' 找到最后一行 LR = .Cells(.Rows.Count, 1).End(xlUp).Row ' Enter loop For i = LR To 1 Step -1 If Not (IsEmpty(.Cells(i))) Then ' 使用“.”提取和分割文本作为分隔符 str() = Split(.Cells(i).Value, ".") ' 从 str() 中的第一个数组变量重写单元格中的文本 .Cells(i).Value = str(0) End If Next i以结束子结束 由于我正在处理的数据位于 A 列中,因此如您在代码中看到的那样,我将范围值设为 A2。但不幸的是,代码不起作用。如果您有任何 cmets,请告诉我。 所有你需要做的就是调用这个函数......你不应该修改任何东西。 看不懂的看VBA Function Calling以上是关于我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?的主要内容,如果未能解决你的问题,请参考以下文章
excel中有两个表,找出A表中不重复8表的身份证号,我的A表和B表的数据大多还不相同
怎么把excel文件中的A和B表拆分成两个独立的excel文件?
如何将行从一个 Excel 工作表复制到另一个工作表并使用 VBA 创建重复项?