问题标签 [excel-365]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
147 浏览

excel - Microsoft Excel 无缘无故地不断修复我的 .xlsm 文件,并消除了工作表上的数据验证

我最近创建了一个自动化 Excel 实用程序(使用Microsoft Office 2019),我在其中广泛使用了数据验证、VBA 代码、命名范围和格式设置。它运行良好,直到有一天我收到一条 Excel 提示消息,内容如下:

在此处输入图像描述

当我单击 时Yes,它会给我另一个弹出窗口,上面说它恢复了文件,并且还给了我一个指向错误日志 XML 文件的链接。我单击它并使用我的默认浏览器打开 .xml 文件,它显示以下详细信息:

在此处输入图像描述

看起来它正在从特定工作表中删除数据验证,当我在 UI 中导航到该工作表时,我意识到这是真的。为了解决 Excel 应用程序强制执行的这种无根据且重复的数据验证删除,我创建了一个宏代码,它将根据需要重新启用所有这些数据验证。当这个 Excel 文件在另一台计算机上用Microsoft Office 365. 看起来它不仅删除了数据验证,还删除了其他组件,如命名范围和按钮。它可能会删除其他一些东西,我目前不知道。因此,为恢复数据验证而创建的宏不再有用。

为什么会出现这个问题?为什么不同版本的 Excel 表现不同?我该如何解决这个问题?感谢您的帮助。谢谢!

0 投票
1 回答
37 浏览

excel - 修正方程,使 A、B 列不必彼此相邻

我在下面有这个公式,它对 A 和 B 列中的数据进行排序,如图所示。

在此处输入图像描述

公式为: =SUBSTITUTE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>'",,A2:B60)&"</s></t>","//s"),"'","")

然而,这个问题的问题在于它要求 A 列和 B 列彼此相邻。

Gary Student 为我提供了上述内容和替代解决方案,该解决方案可以在不相邻列的情况下实现相同的效果,但这需要 LET 函数。对于那些感兴趣的人,这个解决方案是:=LET(x,INDEX(A$2:E$22,ROUNDUP(SEQUENCE(42)/2,0),IF(MOD(SEQUENCE(42),2)=0,5,1)),FILTER(x,x<>"")).

无论出于何种原因,尽管我的工作计算机具有 excel 365,但没有 LET 功能,我无法更新它。

我想知道是否有人知道如何修改此公式,以便 A 列和 B 列不必相邻。

0 投票
0 回答
39 浏览

arrays - 修改工作公式以忽略空白单元格和指定字符(“-”)

我有这个公式可以很好地按特定顺序组合 A 列和 B 列:

=SUBSTITUTE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>'",,CHOOSE({1,2},IF(E2:E67="-","",E2:E67),G2:G67))&"</s></t>","//s"),"'","")

这是一个变体:=FILTERXML("<a><b>"&SUBSTITUTE(TEXTJOIN(",",TRUE,A2:B22),",","</b><b>")&"</b></a>","//b")

旧公式的问题在于,它要求从中提取值的列是相邻的。新公式解决了这个问题,但现在与原始公式不同的是,它不会过滤掉空白单元格,而是插入 0。

此外,我希望能够定义一个字符,例如“-”,以便忽略新公式。

附图显示了两个公式的差异。 在此处输入图像描述

0 投票
1 回答
155 浏览

arrays - 搜索数组并返回布尔值excel的函数

如果此数组中的值大于给定的安全值,我如何搜索安全值数组并返回布尔值/消息?

到目前为止,我只使用了一个简单的 IF 语句:

=IF(H10:J12>K10,"Safety concern identified","No Safety concern Identified")

但是,这将返回数组每个值的结果。相反,如果任何值超过限制,我只想返回一个单元格。有没有可以做到这一点的功能?

0 投票
1 回答
29 浏览

excel - 将 MIN/MAX 应用到数组的 LET 函数的奇怪行为

假设单元格 A1:C1 包含

当 A2 包含:

并被复制到 B2:B3,输出为200,600, 80,正如预期的那样。

如果 A2 包含

并再次复制,输出100, 150, 40也如预期的那样。

现在转向范围表示法,如果 A2 包含

200,600, 80正如预期的那样,输出溢出到 B2:B3 - 。

但是,如果 A2 包含

输出不会溢出,A2 是40

MAX、SUM 等以及桌面版和网页版 Excel 的效果相同。

这是一个错误还是我做错了什么?

0 投票
1 回答
58 浏览

arrays - 动态助手列?

我希望使用动态数组创建一个辅助单元,这可能吗?

通常我使用这个例子=IF(A4="",C2,A4)中的公式来检查 A 列是否为空白,如果是,则复制上述值,直到 A 列中出现一个新值。

但是,如图所示,当我插入新行时,辅助单元格会损坏。

出于这个原因,我想使用一个动态数组来创建应该能够处理插入或删除行的辅助单元格。

我遇到的问题是,与您可以向下拖动的普通公式不同,动态数组正在查看整个值。如镜像所显示,使用=IF(A4:A40="","-",A4:A40)插入一个连字符。本质上,我希望替换连字符,以便“对于 A4:A40 之间的每个值,检查是否为空白,如果为真,则取上述单元格中的值”。本质上是创建一个动态帮助列。

在此处输入图像描述

0 投票
5 回答
434 浏览

excel - 计算动态数组/范围内的小计

我有下面的数据,其中 A 列包含从另一张表中提取以下数据的公式,这样如果修改了原始表,则更新值。

对于每组金属,我希望创建一个如图所示的值的小计。

在此处输入图像描述

我很欣赏 excel 具有小计功能,但是当我尝试实现此功能时,我收到一个错误,指出无法更改数组。有没有办法将它合并到动态数组中?

可能的 VBA 解决方案? 在线我发现下面的 VBA 代码在一定程度上产生了我想要的效果,但是就像以前一样,这仅适用于纯数据,如果我将其应用于提取的数据,将返回相同的错误“无法修改数组”。

作为完全不熟悉 VBA 的人,我不确定将代码应用于动态数组时有多大帮助。

如果有人能想出一种方法来实现如上图所示的所需输出,或者使用 VBA,或者通过修改创建动态数组的公式(不确定仅使用公式是否可行)更好,我将不胜感激。

0 投票
1 回答
60 浏览

excel - Excel vba 代码另存为 pdf 不再适用于 excel 365(Windows 10)

以前在 Windows 7 (Excel 2013) 上工作的 Excel VBA 代码不再在 Windows 10 (excel 365) 上工作。

现在生成了运行时错误。

调试器突出显示从第一个 ActiveSheet.ExportAsFixedFormat 开始的 4 行,一直到 False。

有没有办法改变我的代码,以便在 Windows 10 / excel 365 上运行?

0 投票
2 回答
741 浏览

excel - Excel 365 VBA 小时和分钟格式

我正在处理一个简单的 Excel 文件,其中包含一些工作表,我在每个工作表中都报告了小时和分钟的工作时间。我想将其显示为 313:32 即 313 小时 32 分钟,为此我使用自定义格式[h]:mm

为了方便很少使用 Excel 的工作人员,我想创建一些 vba 代码,以便他们不仅可以插入分钟,还可以插入经典格式[h]:mm,因此他们还可以插入小时和分钟的值。我报告了一些我想要的示例数据。我插入的内容 -> 我想要在单元格内打印的内容

  • 1 -> 0:01
  • 2 -> 0:02
  • 3 -> 0:03
  • 65 -> 1:05
  • 23:33 -> 23:33
  • 24:00 -> 24:00
  • 24:01 -> 24:01

然后我格式化了每个可以包含时间值的单元格[h]:mm并编写了这段代码

该代码运行良好,但是当我输入 24:00 及其倍数 48:00、72:00 时它会出错...这是因为单元格已格式化[h]:mm,因此 24:00 在 vba 代码执行之前变为 1!

我试图更正代码,有趣的事实是,当我更正 24:00,所以 24:00 仍然是 24:00 而不是 00:24,问题切换到 1,变成 24:00 而不是 00:01

我的第一个想法是在单元格格式之前“强制”执行 vba 代码,但我不知道这是否可能。我知道这似乎是一个愚蠢的问题,但我真的不知道这是否可能以及如何解决它。

任何想法将不胜感激

0 投票
0 回答
18 浏览

excel - 将具有不同标题和行的矩阵表更改为汇总表

我正在尝试将矩阵表更改为更简单的数据库,以允许合并多个工作簿。我在这里看到了一些潜在的选项,但似乎没有一个与我想要的完全匹配,而且我无法转换为表格,因为标题是一个公式。

该文件是一个模板,因此需要能够在不同的项目中使用,因此需要不同的标题。现有表将与此类似:

前两列对于每个文件都是不变的,因此每次使用模板时都会预先填充它们。顶部的月份最长可运行 2 年,但会因开始日期而异(在不同的选项卡上设置),因此标题是根据项目的第一个月为第一列设置的,然后在每一次。这些需要能够改变,所以不能做成静态表头转换成表格。每个月的阶段、名称和日期将随着时间的推移输入和修改。

每个项目都会有一个,每个项目都在不同的工作簿中,但所有项目的开始月份和持续时间(列数)都可能不同。为了能够轻松地将它们组合到一个汇总工作簿中,我希望有一个更一致的汇总表:

因此,基本上它扩展了每个阶段,为每个员工提供一行,每个月的每个员工,增加总天数。

如果可能的话,我想避免使用 VBA,但认为这可能是不可能的。我没有看到有一种方法可以维护固定的标题并且仍然具有我需要的表格的功能,但我同样希望能够查看所有不同的单个项目工作簿中总结的所有内容,所以我认为简化的需要表。

无论如何要这样做还是我会陷入死胡同?

谢谢