|
楼主 |
发表于 2014-12-16 16:25
|
显示全部楼层
chxw68 发表于 2014-12-16 16:20
使用ucase()或者lcase()函数。
Sub 转表()
Dim d, arr, brr, wb As Workbook
Application.ScreenUpdating = False ' 关闭屏幕刷新,加快运行速度
Set d = CreateObject("Scripting.Dictionary") ' 创建字典
hm = Sheets("Flight Booking Sheet").LCase(Range("R8").Value) ' 查询关键字,(我需要按照R8单元格查询原始报表里的数据,不区别大小号字母)
For Each wb In Workbooks
d(wb.Name) = ""
Next ' 字典用于确认"原始数据.xlsx"是否打开,未打开则打开,打开了则激活使其成为活动工作簿
If Not d.exists("原始报表.xlsx") Then Workbooks.Open (ThisWorkbook.Path & "\report\原始报表.xlsx")
Workbooks("原始报表.xlsx").Activate
With ActiveWorkbook ' 在活动工作簿(即"原始数据.xlsx")的"原始报表"上用arr数组取数据后,
arr = .Sheets("原始报表").Range("A1").CurrentRegion
.Close False ' 关闭"原始数据.xlsx"工作簿
End With
ReDim brr(1 To UBound(arr), 1 To 40) ' 定义数组brr存储查询结果
For i = 2 To UBound(arr) ' 在原始数据中循环
If arr(i, 3) = hm Then ' 根据查询关键字,按对应关系把原始数据(arr数组中的值)写入结果数组brr
m = m + 1 ' 的行,m的初始值为0
brr(m, 1) = m ' 结果数组第1列=行号,也就是序号
brr(m, 3) = arr(i, 35)
brr(m, 4) = arr(i, 34)
brr(m, 5) = arr(i, 33) End If
Next
Sheets("Flight Booking Sheet").Range("A15").Resize(4000, 40).ClearContents ' 清
Sheets("Flight Booking Sheet").Range("A15").Resize(m, 40) = brr '
Application.ScreenUpdating = True ' 开启屏幕刷新
MsgBox "完成"
End Sub
请问老师这个函数怎么用?以上是完全代码。
|
|