ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3396|回复: 7

[求助] 不打开工作簿引用单元格数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-12-9 15:22 | 显示全部楼层 |阅读模式
2个工作表间的“房号”时唯一对应的关系,想把备案汇总表1里的数据(f、h、i、k列)按照房号对应的关系自动填充到“统计表vba”中,要提高填充的速度,谢谢。
2008113014531449391.rar (49.85 KB, 下载次数: 149)

TA的精华主题

TA的得分主题

发表于 2008-12-9 16:53 | 显示全部楼层
请测试:
Sub testGetValue()
    Dim p As String, f As String, s As String, a As String, m As Long, j As Integer
    Dim arr, brr(1 To 65535, 1 To 7), d As Object, i As Long, lr As Long, temp
    lr = [a65536].End(3).Row
    arr = Range("a3:g" & lr).Value
    p = ThisWorkbook.Path & "\"
    f = "备案汇总表1.xls"
    s = "Sheet2"
    Set d = CreateObject("scripting.dictionary")
    For i = 2 To 65536
        a = "B" & i: temp = getvalue(p, f, s, a)
        If temp = 0 Then
            Exit For
        End If
        d(temp) = i
    Next i
    For i = 1 To lr - 2
        temp = arr(i, 1)
        If d.exists(temp) Then
            a = "F" & d(temp): arr(i, 3) = getvalue(p, f, s, a)
            a = "H" & d(temp): arr(i, 5) = getvalue(p, f, s, a)
            a = "K" & d(temp): arr(i, 6) = getvalue(p, f, s, a)
            a = "I" & d(temp): arr(i, 7) = getvalue(p, f, s, a)
        End If
    Next i
    Range("a3:g" & lr).Value = arr
    MsgBox "处理完毕"
End Sub
Private Function getvalue(pa As String, File As String, SHEET As String, REF As String)
    Dim arg As String
    arg = "'" & pa & "[" & File & "]" & SHEET & "'!" & Range(REF).Range("A1").Address(, , xlR1C1)
    getvalue = ExecuteExcel4Macro(arg)
End Function

[ 本帖最后由 zhaogang1960 于 2008-12-9 18:58 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-10 13:21 | 显示全部楼层
谢谢您的回答,速度比我的宏运行的要快,请问
Private Function getvalue(pa As String, File As String, SHEET As String, REF As String)
    Dim arg As String
    arg = "'" & pa & "[" & File & "]" & SHEET & "'!" & Range(REF).Range("A1").Address(, , xlR1C1)
    getvalue = ExecuteExcel4Macro(arg)
End Function
这段代码是作什么用的
还有  a = "B" & i: temp = getvalue(p, f, s, a),不太懂什么意思

[ 本帖最后由 crreg 于 2008-12-10 13:23 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-12-10 16:18 | 显示全部楼层

回复 3楼 crreg 的帖子

那段Function是自定义函数,调用它可以在关闭的工作簿中取值,它使用了excel5以前版本的老式宏,我也不懂,只管用吧
a = "B" & i: temp = getvalue(p, f, s, a)是两个语句,a = "B" & i表示b列第i行单元格
temp = getvalue(p, f, s, a)是调用Function自定义函数,取出关闭工作簿(备案汇总表1)Sheet2工作表中b列第i行单元格的值

TA的精华主题

TA的得分主题

发表于 2009-4-3 10:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
打搅了,
请问下面getvalue功能能不能get一整行的数据然后将数据赋给arr ,如何实现.
谢谢.

a = "F" & d(temp): arr(i, 3) = getvalue(p, f, s, a)

Private Function getvalue(pa As String, File As String, SHEET As String, REF As String)
    Dim arg As String
    arg = "'" & pa & "[" & File & "]" & SHEET & "'!" & Range(REF).Range("A1").Address(, , xlR1C1)
    getvalue = ExecuteExcel4Macro(arg)
End Function

TA的精华主题

TA的得分主题

发表于 2009-4-3 10:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 5楼 exp_dyq 的帖子

请参考:
Sub aaa() '假设从本目录"1.xls"工作簿"Sheet1"的"A:K"列取值
    Dim i As Integer, arr
    Sheet2.Cells.Clear 'Sheet2为临时工作表
    i = 3 '取值行数
    bbb ThisWorkbook.Path, "1.xls", "Sheet1", "A1:K" & i, i
    arr = Sheet2.Range("A2:K" & i + 1)
    Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr '测试效果
End Sub
Sub bbb(Path As String, WorkbookName As String, SheetName As String, RangeName As String, i As Integer)
    Dim lr As Long, rng As String
    With Sheet2
        lr = .Range("a65536").End(xlUp).Row + 1
        rng = "A" & lr & ":K" & lr + i - 1
        With .Range(rng)
          .FormulaArray = "='" & Path & "\[" & WorkbookName & "]" & SheetName & "'!" & RangeName
          .Value = .Value
          .Replace 0, "", xlWhole
        End With
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2009-4-3 12:53 | 显示全部楼层
Dim p As String, f As String, s As String, a As String, m As Long, j As Integer
请问一下,什么时候用“string”什么时候用“long”什么时候用“integer”?

TA的精华主题

TA的得分主题

发表于 2009-4-3 15:17 | 显示全部楼层
请参阅VBA帮助
String 数据类型
字符串有两种:变长与定长的字符串。
Long 数据类型
Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号 (&)。
Integer 数据类型
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符号 (%)。
在本程序中,路径、工作簿、工作表名称使用String 数据类型
行号使用Long 数据类型
列号使用Integer 数据类型
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 22:23 , Processed in 0.039000 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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