我又不需要什么帮助了。
我有一个 excel 文件,我必须做一些格式化才能进一步处理。 我卡在一点上:
- 查找单词/或字符串
- 取回它在Excel中的使用频率
- 使用此数字将其放入循环中
我希望这可以通过VBscript实现,因为我不能使用VBA。 这就是代码的样子,但我不起作用
Dim objExcel
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
excel.workbooks.open "C:Users............."
excel.Rows("1:34").Select
excel.Selection.Delete
excel.Columns("A:A").Select
excel.Selection.Delete
excel.Range("A1").Select
Number = excel.countIf "A:A", "Ent.Date"
for i = 1 to Number
excel.Cells.Find("Ent.Date").Activate
excel.Activecell.Offset(-1,0).Select
excel.Activecell.resize(RowSize +3).EntireRow.Select
excel.Selection.Delete
next
请帮助我。
谢谢
你很接近。CountIf()
是Excel
应用程序中WorksheetFunction
类的方法。所以:
Number = Excel.WorksheetFunction.CountIf("A:A", "Ent.Date")
不相关的。所有这些.Active
.Select
都是不必要的。人类Select
和Activate
,但你的脚本不需要。
相反:
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
excel.workbooks.open "C:Users............."
excel.Rows("1:34").Delete
excel.Columns("A:A").Delete
Number = excel.WorksheetFunction.CountIf(Excel.Range("A:A"), "Ent.Date")
for i = 1 to Number
excel.Cells.Find("Ent.Date").Offset(-1,0).resize(RowSize +3).EntireRow.Delete
next
另外(这可能是更偏好的(与其循环For
不如我们While
循环:
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
excel.workbooks.open "C:Users............."
excel.Rows("1:34").Delete
excel.Columns("A:A").Delete
Do While excel.WorksheetFunction.CountIf(Excel.Range("A:A"), "Ent.Date") >= 1
excel.Cells.Find("Ent.Date").Offset(-1,0).resize(RowSize +3).EntireRow.Delete
Loop
这会导致一些额外的开销,因为它在每个循环上运行该 countif,但它感觉更简洁且出错的可能性更小,因为您似乎正在调整Find()
返回的范围的大小为更多行,然后将它们全部删除......这意味着您可能会选择也包含搜索条件的行,这意味着您在For
循环中循环太多。但。。。也许您的工作表的设置方式不会发生这种情况。