首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Excel中相对引用另一个工作簿?

如何在Excel中相对引用另一个工作簿?
EN

Stack Overflow用户
提问于 2012-07-24 11:12:20
回答 7查看 139.5K关注 0票数 21

我正在制作一张表格来计算价格。工作表必须具有对其他几个工作簿的引用,才能获得不同组件的价格。这在我的计算机上运行良好,但当我将它们移动到服务器或另一台计算机时,它找不到引用。

我的文件夹结构如下:

代码语言:javascript
运行
AI代码解释
复制
Folder
|-- prices.xlsx
|-- Fixed Components
|   |-- ComponentsA.xlsx
|   +-- ComponentsB.xlsx
|
+-- Variable Components
    |-- ComponentsC.xlsx
    +-- ComponentsD.xlsx

prices.xlsx是引用其他工作表的主工作表。在我的计算机上,它使用绝对路径构建引用,因此当我复制文件时,该路径将固定在我的计算机上,而不是引用另一台PC上的文件。

有没有办法使引用成为相对的,这样我就可以在主表中放入像='\Variable Components\[ComponentsC.xlsx]Sheet1'!A1这样的东西。我不想使用VBA来解决这个问题,因为人们往往不信任Macros,然后抱怨这些函数不起作用。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-07-24 12:56:04

我所见过的将外部文件组织到子文件夹中的唯一解决方案需要使用VBA来解析公式中外部文件的完整路径。以下是一个站点的链接,其中包含其他人使用过的几个示例:

http://www.teachexcel.com/excel-help/excel-how-to.php?i=415651

或者,如果可以将所有文件放在同一个文件夹中,而不是将它们拆分为多个子文件夹,则即使将文件移动到网络位置,Excel也将解析外部参照,而无需使用VBA。然后,您的公式就变成了简单的='[ComponentsC.xlsx]Sheet1'!A1,没有要遍历的文件夹名称。

票数 9
EN

Stack Overflow用户

发布于 2014-01-25 22:05:45

我有一个类似的问题,我通过使用以下序列解决了这个问题:

  1. 使用CELL("filename")函数获取当前文件当前工作表的完整路径。
  2. 使用SEARCH()函数查找当前excel文件和工作表的FileNameSheetName字符串的开头。
  3. 使用LEFT函数提取包含当前文件的目录的完整路径名。
  4. 将步骤3中找到的目录路径名与要访问的文件名、工作表名称和单元格引用连接在一起。
  5. 使用INDIRECT()函数访问在步骤4中创建的CellPathName

注意:这些相同的步骤也可用于访问文件中的单元格,这些文件的名称是动态创建的。在第4步中,使用从单元格内容、当前日期或时间等动态创建的文本字符串。

包含所有这些步骤的单元格引用示例(每个部分都单独组装)如下:

代码语言:javascript
运行
AI代码解释
复制
=INDIRECT("'" & LEFT(CELL("filename"),SEARCH("[MyFileName]MySheetName",CELL("filename")) - 1) & "[" & "OtherFileName" & "]" & "OtherSheetName" & "'!" & "$OtherColumn$OtherRow" & "'")

请注意,LibreOffice使用的CellPatnName语法略有不同,如下例所示:

代码语言:javascript
运行
AI代码解释
复制
=INDIRECT(LEFT(CELL("filename"),SEARCH("[MyFileName]MySheetName",CELL("filename")) - 1) & "OtherFileName" & "'#$" & "OtherSheetName" & "." & "$OtherColumn$OtherRow")
票数 7
EN

Stack Overflow用户

发布于 2014-03-03 14:51:56

通过间接方式更简单、更快捷:INDIRECT("'..\..\..\..\Supply\SU\SU.ods'#$Data.$A$2:$AC$200")

但是,如果工作簿中有大量链接,则indirect()会有性能缺陷

我很怀念像这样的构造: LibreOffice中的['../Data.ods']#Sheet1.A1。其意图是:如果我在源文件系统的有限目录子树中创建一堆主工作簿和相关的报告工作簿,我可以用完整的工作簿包压缩整个目录子树,并通过电子邮件左右将其发送给其他合作人员。它将被保存在目标系统上的其他绝对路径中,但链接在新的绝对路径中再次工作,因为它是相对于子树根进行编码的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11629633

复制
相关文章
MS SQL SERVER导出表结构到Excel
在结果就能看到数据库所有表的结构,这个时候只要全选,然后右击出来属性框,选择将结果另存为,这个时候您只要选择导出CSV,然后新建一个Excel表格,在菜单栏选择数据,再选择自文本,后面的大家可以自己的需求自行处理了。
jamesjiang
2022/11/20
1.5K0
vb中adodc连接sql(如何用vb打印Access数据)
本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0。在VB的数据库操作中,连接数据库是第一步,也是最基本的,本文所述的这个例子,对于初学者学习如何在VB中连接Access数据库有着很好的借鉴参考价值。
全栈程序员站长
2022/08/01
2.1K0
VB.NET DATAGRIDVIEW数据导出Excel
Dim rowc As Integer = prt_dgv.Rows.Count
办公魔盒
2019/07/22
2.4K0
VB.NET DATAGRIDVIEW数据导出Excel
机房收费系统——VB将MSHflexgrid控件中的数据导出为Excel
 在做机房收费系统的时候,许多窗体用到的一个功能,就是将从数据库中提取出来的数据导出到Excel中。
令仔很忙
2018/09/14
1.2K0
vb.net从数据库中取数据
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155767.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
2.2K0
vb.net从数据库中取数据
excel 导出json_导出的数据格式不对
但是用这种方式会出现一种问题,就是当你的table有分页的情况下,只能抓取当前分页的数据。
全栈程序员站长
2022/09/20
1.3K0
excel 导出json_导出的数据格式不对
从mongoDB中定时导出数据shell脚本
目标:编写一个shell脚本,以便能够将mongoDb中的数据导出成为csv格式的文件。要求:1. 为了避免导出巨量数据,仅需要过滤出当月数据和上个月的数据即可。2. 由于当天的数据是不完整的,所以需要排除当天的数据以下是一个例子,将代码保存为.sh文件后使用 chmod +x 将该脚本设置为可执行,然后使用crontab命令将脚本加到定时任务当中
用户1503405
2021/10/31
1.4K0
SQL DML:数据导入&导出
将文件导入到Hive中,需要文件编码格式为UTF-8,\n为换行符,否则就需要进行预处理。处理过程分为两部分:编码格式、换行符。
十里桃花舞丶
2021/09/10
7420
MS SQL 的存储过程练习
/*带参存储过程 if(OBJECT_ID('proc_find_stu', 'p') is not null)    drop proc proc_find_stu go create proc proc_find_stu(@startId int, @endId int) as    select * from student where stu_id between @startId and @endId go*/ /*调用存储过程 exec proc_find_stu 7, 9*/ --带通配符参数存储过程 /*if(OBJECT_ID('proc_findStudentByName','P') is not null)    drop proc proc_findStudentByName go create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%') as    select * from student where stu_name like @name and stu_name like @nextName; go*/ --执行存储过程 /*exec proc_findStudentByName; exec proc_findStudentByName '%o%','t%';*/ --带输出参数存储过程 /*if(OBJECT_ID('proc_getStudentRecord','P') is not null)    drop proc proc_getStudentRecord go create proc proc_getStudentRecord(    @id int,--默认输入参数    @name varchar(20) out, -- 输出参数    @age varchar(20) output -- 输入输出参数 ) as    select @name = stu_name, @age = stu_age from student where stu_id = @id and stu_age = @age; go*/ -- /*declare @id int,         @name varchar(20), @temp varchar(20); set @id = 9; set @temp = 40; exec proc_getStudentRecord @id,@name out,@temp output; select @name, @temp print @name + '#' + @temp;*/ --不缓存存储过程 --WITH RECOMPILE 不缓存 /*if (OBJECT_ID('proc_temp','P') is not null)    drop proc proc_temp go create proc proc_temp with recompile as     select * from student; go*/ --exec proc_temp; --加密WITH ENCRYPTION /*if (OBJECT_ID('proc_temp_encryption','P')is not null)    drop proc proc_temp_ecryption go create proc proc_temp_encryption with encryption as    select * from student; go*/ /*exec proc_temp_encryption; exec sp_helptext 'proc_temp'; exec sp_helptext 'proc_temp_encryption';*/ --带游标参数存储过程 /*if(OBJECT_ID('proc_cursor','P') is not null)    drop proc proc_cursor go create proc proc_cursor    @cur cursor varying output as    set @cur = cursor forward_only static for    select stu_id, stu_name, stu_age from student;    open @cur; go*/ --调用 /*declare @exec_cur cursor; declare @id int,         @name varchar(20), @age int; exec proc_curs
静谧的小码农
2019/01/11
9850
宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
一,首先,创建一个ASP.NET Core测试项目 1.1 打开VS2019/2022,创建一个.NTE6 Core控制台应用,为什么要这么干呢?因为VB已经不是MS的宠儿了,只能通过控制台,手动配
办公魔盒
2023/03/02
3.2K0
宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
MS SQL Sever数据库系统
是一个高性能的、多用户的关系数据库管理系统,它提供客户/服务器体系结构,是目前较为时流行的一种数据库服务器系统。
ellipse
2019/08/16
9130
Ms SQL Server 如何导入数据库
首先打开 Management Studio,随便在一个数据库上右键,然后选择新建查询:
wsuo
2020/07/30
2.2K0
Ms SQL Server 如何导入数据库
Linux中mongodb安装和导出为json
采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以远程导出,只要有host:port即可。 首先需要安装tools: 在redhat中: 文档:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1、编写repo文件 Create a /etc/yum.repos.d/mongodb-org
Ryan-Miao
2018/03/13
1.9K0
ASP.NET输出JSON格式数据
一直使用WordPress3.1的版本,12月份WordPress发布了3.5的版本,想尝试升级一一下。当然最好是先在本地环境测试通过,然后上传的服务器是最好的方法。操作系统是Windows8 64位,设置基本和操作无关。 按照安装步骤,显示Apache2.2,然后是PHP5.4,最后就是MySQL5.5。安装过程问题还是蛮多了,下面总结如下,基本都是因为少配置了,或者配置不正确导致的。我安装好以上三个软件之后,将下载的WordPress3.5解压后的文件复制到Apache htdocs根目录下。然后在浏览
八哥
2018/01/18
3.7K0
ASP.NET输出JSON格式数据
JSON在线生成VB.NET实体类应用实例-JSON数据解析
2.在主页json数据框中粘贴标准的json数据然后点击”生成VB.NET实体类“按钮,即可生成解析当前JSON的实体类,然后复制即可使用!
办公魔盒
2019/12/02
2.7K0
使用 flink table sql接收 json 数据写入 mysql 中
使用 flink(table sql)+kafka+mysql 实现一个简单的 demo
earthchen
2021/05/27
5.5K0
php连接MS SQL Server
从5.3开始,PHP自带的dll不再支持2000以后的MS SQL Server了。
似水的流年
2019/12/04
1.9K0
一段从Infor ERP LN(Baan)的Oracle数据库中导出数据到SQL Server的SQL语句
保存一段从Baan ERP LN的Oracle数据库中导出数据到SQL Server的SQL语句,前提是在MSSQL 2005中建立Link Server。
崔文远TroyCui
2019/02/27
1.3K0
StreamingPro SQL Server 支持异步导出数据
StreamingPro可以很容易让你搭建一个Spark SQL Server 服务,并且提供Http 格式的接口进行交互。通常查询结果较小,但是如果用户的SQL可能会产生几G甚至几十G的结果,那么Driver 就直接挂了。StreamingPro提供了同步和异步机制,将SQL的查询结果放在HDFS上。如果是同步的话,执行完后返回下载地址(HTTP接口,StreamingPro提供),如果是异步,则会使用用户提供的回调函数告知任务完成,并且提供下载地址。
用户2936994
2018/08/27
4810
StreamingPro SQL Server 支持异步导出数据
微信海量数据查询如何从1000ms降到100ms?
👉腾小云导读 微信的多维指标监控平台,具备自定义维度、指标的监控能力,主要服务于用户自定义监控。作为框架级监控的补充,它承载着聚合前 45亿/min、4万亿/天的数据量。当前,针对数据层的查询请求也达到了峰值 40万/min,3亿/天。较大的查询请求使得数据查询遇到了性能瓶颈:查询平均耗时 > 1000ms,失败率居高不下。针对这些问题,微信团队对数据层查询接口进行了针对性的优化来满足上述场景,将平均查询速度从1000ms+优化到了100ms级别。本文为各位分享优化过程,希望对你有用! 👉目录 1 背景介绍
腾讯云开发者
2023/06/05
5480
微信海量数据查询如何从1000ms降到100ms?

相似问题

用户字符串输入以彩色显示

11

以彩色显示jquery调色器图标

216

如何在shell屏幕中以彩色显示

23

如何使用jsp、javascript、css以粗体或彩色显示表格数据

20

以彩色显示文件中的内容

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档