- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个电子表格工具,该工具可以快速从其他电子表格中提取选定的数据,从而允许我检查大量电子表格中的错误值或错误,每个电子表格都有 40 多个标签。我已经成功地使用“单元格内”Excel 函数对我的电子表格进行了专门的编程以
1 识别目标电子表格(这应该是唯一的用户输入)
2 从多个选项卡中的目标电子表格中的一系列选定单元格中提取值。
问题是,虽然 =indirect 和 =concatenate 允许我构建一个正常运行的系统,但如果有人修改模板的单个行或列,该工具就会中断,或者至少会从错误的单元格中提取数据。
所以现在我正在寻找如何适应这种情况。我找到了使用索引、匹配和偏移移动单元格的解决方案,我只需要每个人都不要从相邻单元格中删除搜索词标签,这感觉很合理。只要工作表上只有一个单元格显示“总计”,我就可以得到它右边的值,这就足够了。
但现在我遇到了“如果他们重命名选项卡怎么办?”的问题。是的。是的,他们确实。很多。
因此,为了将我的索引和匹配定位在正确的位置,我需要将选项卡名称连接到间接索引中,并且为了获得那些不需要我检查的每个电子表格 20 分钟的人工劳动,我需要自动生成一个列表我定位的电子表格上的选项卡名称。我需要在不向目标电子表格添加宏的情况下生成此列表,将其保留在我的工具中。
我意识到这可能超出了 excel 的能力,我还没有准备好开始编写 80 行的宏。但我希望有某种查询或一系列嵌套函数可以远程列出 excel 选项卡的名称,并且有人知道。
最佳答案
以下截图/代码引用:
VB代码:
改编自 Microsoft office和(主要)Dalgleish, D (2016)
Option Explicit
Sub Button1_Click()
Dim fd As Office.FileDialog
Dim j As Integer
Dim file As Variant
Dim aWbk As Workbook
Dim aSh As String
Dim lcount, lfields As Long
Set aWbk = ActiveWorkbook
aSh = ActiveSheet.Name
Set fd = Application.FileDialog(msoFileDialogFilePicker)
j = -1
aWbk.Sheets(aSh).Range("B:G").Clear
With fd
.Filters.Clear
.Title = "Select an Excel File"
.Filters.Add "Excel Files", "*.xlsx?", 1
.AllowMultiSelect = True
'Dim sFilePaths As Array(String)
If .Show = -1 Then
lcount = 2
lfields = 6
With aWbk.Sheets(aSh)
.Range(.Cells(1, 2), _
.Cells(1, lfields + 1)).Value _
= Array( _
"File Name", _
"Sheet Name", _
"Used Range", _
"Range Cells", _
"Shapes", _
"Last Cell")
End With
For Each file In .SelectedItems
Call ListSheetsRangeInfo(file, 3 * j, aWbk, aSh)
Next
End If
End With
End Sub
Sub ListSheetsRangeInfo(sTheSourceFile As Variant, j As Integer, aWbk As Workbook, aSh As String)
'https://contexturesblog.com/archives/2016/03/10/list-all-excel-sheets-with-used-range/
Dim ws As Worksheet
Dim lcount As Long
Dim wsTemp As Worksheet
Dim rngF As Range
Dim lfields As Long
Dim strLC As String
Dim strSh As String
Dim sha As Shape
Dim sh As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim src As Workbook
'On Error Resume Next
Set src = Workbooks.Open(sTheSourceFile, False, True) ' Open the source file.
lfields = 6
'lbcount = lcount
src.Activate
For Each sh In src.Sheets
strLC = sh.Cells _
.SpecialCells(xlCellTypeLastCell) _
.Address
If sh.ProtectContents = True Then
strSh = ""
Else
If sh.Shapes.Count > 0 Then
strSh = ""
For Each sha In sh.Shapes
strSh = strSh & sha.TopLeftCell _
.Address & ", "
Next sha
strSh = Left(strSh, Len(strSh) - 2)
End If
End If
With aWbk.Sheets(aSh)
lcount = .Range("b1:b" & .Cells(Rows.Count, "B").End(xlUp).Row).Rows.Count + 1
.Range(.Cells(lcount, 2), _
.Cells(lcount, lfields + 1)).Value _
= Array( _
sTheSourceFile, _
sh.Name, _
sh.UsedRange.Address, _
sh.UsedRange.Cells.Count, _
strSh, _
strLC)
'add hyperlink to sheet name
.Hyperlinks.Add _
Anchor:=.Cells(lcount, 2), _
Address:=sTheSourceFile, _
SubAddress:="'" & sh.Name _
& "'!A1", _
ScreenTip:=sh.Name, _
TextToDisplay:=sTheSourceFile
'add hyperlink to last cell
.Hyperlinks.Add _
Anchor:=.Cells(lcount, lfields + 1), _
Address:=sTheSourceFile, _
SubAddress:="'" & sh.Name _
& "'!" & strLC, _
ScreenTip:=strLC, _
TextToDisplay:=strLC
End With
Next sh
With aWbk.Sheets(aSh)
.Range(.Cells(1, 2), .Cells(1, lfields + 1)) _
.EntireColumn.AutoFit
.Rows(1).Font.Bold = True
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
src.Close False ' False, so you don't save the source file.
Set src = Nothing
End Sub
力学
包含 2 个模块:
Button1_Click() :附加到命令按钮(或可以直接从 VBA 项目资源管理器运行)- 此模块允许您浏览感兴趣的文件(可以进行多项选择)。然后它调用下一个模块/程序 (2),并为您选择的每个文件重复此步骤
ListSheetsRangeInfo() :从您在模块 1 中选择的 excel 文件中检索相关信息(使用的范围、工作表名称等)- 返回的信息将不受用户所做的任何修改的影响(它只会识别所有现有的修改范围工作表 - 自定义以允许根据需要隐藏工作表。)。
您还可以根据需要覆盖 D 列中的范围,例如
您知道能够在给定整个文件路径系列的情况下引用完整/可靠的单元格范围,每个工作表的使用范围成分作为要求。 (没有断开的链接和由于插入列、行,甚至重新标记/创建新的或删除工作簿中的工作表而导致的链接)。
例如,一种检索方法是在 A 列中设置一个公式,如下所示:
=IF(B2="","",LET(x_,LEN(B2)-MATCH("\",MID(B2,LEN(B2)-ROW($B$1:OFFSET($B$1,LEN(B2)-1,0,1,1)),1),0),"'"&MID(B2,1,x_)&"["&MID(B2,x_+1,LEN(B2)-x_+4)&"]")&C2&"'!"&D2)
(假设您有 Office 365 兼容版 Excel)
然后继续构建对外部工作表的范围引用,如下所示:
="="&A2
复制此并粘贴特殊值 - 这会留下未评估的外部工作簿范围引用(选择,按 F2 并返回回车将导致相关外部文件的输出(如果 Q 中的外部工作簿在上次关闭时未重新计算, Excel 可能会提示一个对话框来为您提供建议 - 只需按回车键/确定,#Spill! 将返回所需/指定的值。
PS - 只会提到:这种方法的好处是,如果有人肆无忌惮地添加了数十张额外的工作表,您将能够进行筛选 - 并使您的主工作簿保持轻量级/仅包含所需信息
关于excel - 远程获取给定 excel 电子表格的所有选项卡名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71683689/
我这里有一个工作示例。 https://developers.google.com/google-apps/spreadsheets/我需要从用户的谷歌文档下载一些文件。 import com.goo
我需要您在以下方面的帮助: 假设我们有 3 个不同的组:(A、B、C) 我们在每个组中有几个值范围: (Eg. A has 0 - 100, 101 - 200 while B has 0 - 200
谁能告诉我有什么方法可以从 python 连接到电子表格吗?我想从表单中存储一些数据并将其提交到谷歌电子表格。请帮助解决这个问题。我必须遵循哪些步骤? 提前致谢... 最佳答案 连接到 Google
我正在尝试计算 2019 年给定时间范围内的月数。 我的数据如下所示: 我将开始日期和结束日期列的格式更改为“日期”。 “以月为单位的持续时间”和输出列具有数字格式。 我接近它如下: 如果开始日期(年
在设计上有一点问题,希望我能在这里寻求建议。接受 grails 可能是完全错误的工具,但这就是生活。 所以一直在努力开发一个网络应用程序,该应用程序基本上只是从谷歌电子表格中呈现大量信息并发回一些更新
我正在设计一个胖客户端(即非浏览器)Python 应用程序,它将与托管数据库进行通信。该应用程序的屏幕之一需要有一个网格/电子表格区域,允许显示多行数据、过滤、排序和更新多行信息。有人推荐一个具有此功
我在 Django 中有一个表单,可以将用户添加到 mySQL 数据库。然而,用户将不得不添加大量用户,并且一些信息将被复制和粘贴。所以我在想是否有一种方法可以有一个类似表单的电子表格,其中列标题是将
我在 Outlook VBA 中编写了一个程序,它根据 Excel 电子表格的内容创建一些电子邮件。一切正常,但是当程序终止时,我继续运行“EXCEL.EXE”进程,该进程会锁定电子表格,因此其他人无
如何使用公式来确定当前时区? 我使用的公式给出了意想不到的结果。 我的电子表格设置(文件 > 电子表格设置...): 时区: (GMT+01:00) 阿姆斯特丹 我使用的公式: =TEXT(NOW()
如何转换持续时间的小时数? 示例:在单元格 A1 中,我有 176 . 我希望单元格 A2 有 176:00:00 我想在 176 小时(持续时间)内转换数字 176。那可能吗?因为如果我在单元格中键
我收到了 4 个不同的采购订单,上面有一个随机的采购订单编号。 我仅在 A 列中填写采购订单号。 对于这个例子,我收到了下面列出的 4 个不同的采购订单。 采购订单 697533 - 2 项 采购订单
我需要编写循环遍历数据列的程序。根据单元格值和代表变量的每一列重置变量。 练习中的变量取决于循环的这些值。 如何在循环的每次迭代中将值增加 1 来循环遍历行? df=pd.DataFrame(r'C:
我正在做一些详尽的搜索,需要确定新域 (URL) 是否已经在电子表格中。但是,没有一个电子表格对象具有搜索功能,即在大多数文档对象中找到的 findText()。我觉得我错过了一些重要的东西。 我错过
我正在尝试在 Pandas 中导入一个 excel 电子表格,但由于数据“由用户在视觉上构建”以在视觉上对用户友好并且没有使用正确的数据结构,因此我遇到了一些问题。 结果,当在 Pandas 中作为数
我必须在 HTML 页面上显示多个图表,但我无法进行多个查询(直接在 google 电子表格上)。 实际上,我只是第一个查询显示的是谁。 我的代码: Page de pilotage
我使用以下代码作为将 html 网站上的用户输入数据发送到 Google 电子表格的方法: Javascript: function postContactToGoogle() { v
我有一个使用 Google Drive 和电子表格 API 的网站。我想要做的是,如果没有找到具有特定条件的电子表格,则在用户的 Google 云端硬盘上创建电子表格。该电子表格应该是我的 Googl
我目前链接到六个 Excel 电子表格,主要是因为用户在 Excel 中编辑数据更容易/更好(他们从未使用过 Access),而且任何更改都会立即反射(reflect),包括是否有新列添加后即可立即供
我正在努力通过 PowerShell 添加指向可变长度电子表格的链接,无论如何我都会遇到错误。这是我目前正在尝试制作的循环,它嵌套在一个 excel comobject 中, $sheet 代表 $e
在 Excel 电子表格中编写许多工作表可能需要一段时间。并行化它会很有帮助。 此代码运行良好,它使一个 Excel 电子表格在屏幕上弹出,其中包含四个名为 Sheet1、1、2 的工作表 和 3。
我是一名优秀的程序员,十分优秀!