VBS for Excel 用于计数和特定单词并将其用于循环



我又不需要什么帮助了。

我有一个 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都是不必要的。人类SelectActivate,但你的脚本不需要。

相反:

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循环中循环太多。但。。。也许您的工作表的设置方式不会发生这种情况。