标题: [问题求助] VBS如何获取Excel表格L指定字符串/关键字所在行号? [打印本页]
作者: hkxinghu 时间: 2012-5-9 19:57 标题: VBS如何获取Excel表格L指定字符串/关键字所在行号?
本帖最后由 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 = 哈哈
求高手解决
作者: cutebe 时间: 2012-5-9 21:24
- Set ExcelApp = CreateObject("Excel.Application")
- Set ExcelBook = ExcelApp.Workbooks.open("ExcelFile.XLS") 'XLS表格文件
- Set ExcelSheet = ExcelBook.Worksheets("Sheet1") '引号中为工作表名
- ExcelSheet.Activate
- RowCount = ExcelBook.ActiveSheet.UsedRange.Rows.Count
- For i = 1 to RowCount
- If CSTR(ExcelSheet.Cells(i,5)) = "早班" then MW = i 'MW代表早班
- If CSTR(ExcelSheet.Cells(i,5)) = "午班" then NW = i 'NW代表午班
- If CSTR(ExcelSheet.Cells(i,5)) = "晚班" then 'EW代表晚班
- EW = i
- Exit For
- end if
- Next
-
- 'objExcel.Range("I" & (第一个早班行号) & ":I" & (第一个午班行号)).Value = 哈哈
- '上句改成
- ExcelSheet.Range("I" & MW & ":I" & NW).Value = 哈哈
-
- ExcelBook.Close
复制代码
作者: poter 时间: 2012-5-9 21:35
用bat就可以了吧,把xls导成txt,解析它,在循环里放累加计数器,再放IF判断班次,满足条件用goto跳出循环,并输出计数器的值
作者: hkxinghu 时间: 2012-5-9 22:58
回复 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
这个可以找到第一个早班行号
但是下面要引用到行号 我不会 请教高手
作者: more 时间: 2012-5-10 19:08
objexcel.worksheetfunction.match("早班", objexcel.columns("e:e"), false)
用内置函数match
作者: cutebe 时间: 2012-5-13 17:39
回复 4# hkxinghu
C.Row 就是你要引号的行号阿
你也可以设置一个变量 Line,然后引用这个变量,如下:
Line = C.Row
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |