找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25571|回复: 5

[问题求助] VBS如何获取Excel表格L指定字符串/关键字所在行号?

[复制链接]
发表于 2012-5-9 19:57:20 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-26 13:51 编辑

有一个EXCEL例如:

       A            B            C          D            E            
1        姓名    性别     年龄     工资     备注
2        张XX       男      26       1000       早班
3        李XX       男      26       1000       早班
4        赵XX       男      26       1000       午班
5        赵XX       男      26       1000       午班
6        赵XX       男      26       1000       午班
7        赵XX       男      26       1000       午班
8        赵XX       男      26       1000       午班
9        吴XX       男      26       1000       夜班
10      张XX       男      26       1000       夜班
11      张XX       男      26       1000       夜班
............

求一个VBS  以E列内容为关键字  分别或获取 第一个早班所在的行号   第一个午班所在的行号 第一个夜班所在的行号

这三个行号 要能方便下面
引用objExcel.Range("I" & (第一个早班行号) & ":I" & (第一个午班行号)).Value = 哈哈
求高手解决
发表于 2012-5-9 21:24:55 | 显示全部楼层
  1. Set ExcelApp   = CreateObject("Excel.Application")
  2. Set ExcelBook  = ExcelApp.Workbooks.open("ExcelFile.XLS")    'XLS表格文件
  3. Set ExcelSheet = ExcelBook.Worksheets("Sheet1")    '引号中为工作表名
  4. ExcelSheet.Activate
  5. RowCount       = ExcelBook.ActiveSheet.UsedRange.Rows.Count
  6. For i = 1 to RowCount
  7.   If CSTR(ExcelSheet.Cells(i,5)) = "早班" then MW = i  'MW代表早班
  8.   If CSTR(ExcelSheet.Cells(i,5)) = "午班" then NW = i  'NW代表午班
  9.   If CSTR(ExcelSheet.Cells(i,5)) = "晚班" then  'EW代表晚班
  10.     EW = i
  11.     Exit For
  12.   end if
  13. Next

  14. 'objExcel.Range("I" & (第一个早班行号) & ":I" & (第一个午班行号)).Value = 哈哈
  15. '上句改成
  16. ExcelSheet.Range("I" & MW & ":I" & NW).Value = 哈哈

  17. ExcelBook.Close
复制代码
发表于 2012-5-9 21:35:38 | 显示全部楼层
用bat就可以了吧,把xls导成txt,解析它,在循环里放累加计数器,再放IF判断班次,满足条件用goto跳出循环,并输出计数器的值
 楼主| 发表于 2012-5-9 22:58:25 | 显示全部楼层
回复 2# cutebe


    这个倒是可以实现,但是我的数据比较多有7-8千行 这样处理起来太慢,经常卡死。能不能用下面的修改一个呢

dim Path, FSO, EXCEL, Book, Arr, Str,objExcel
Path = CreateObject("Wscript.Shell").CurrentDirectory & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Arr = Split(Str, vbCrLf)
Set FSO = Nothing
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(Path & "8.xls")
objExcel.WorkSheets(1).Activate
Set c = objExcel.Range("b:b").Find("早班", , , 1)
If Not c Is Nothing Then MsgBox c.Row
objWorkbook.Close
objExcel.Quit


这个可以找到第一个早班行号

但是下面要引用到行号 我不会 请教高手
发表于 2012-5-10 19:08:07 | 显示全部楼层
objexcel.worksheetfunction.match("早班", objexcel.columns("e:e"), false)
用内置函数match
发表于 2012-5-13 17:39:48 | 显示全部楼层
回复 4# hkxinghu

C.Row 就是你要引号的行号阿
你也可以设置一个变量 Line,然后引用这个变量,如下:
Line = C.Row
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:16 , Processed in 0.023849 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表