我已经运行了一个包含一些宏的工作簿几年了,突然开始为一些导航按钮(链接到宏的形状ThisWorkbook.Sheets("sheet_name").Activate)抛出这个错误。
工作簿中的其他宏似乎工作正常,但我无法再进入 VBA 编辑器查看任何代码 - 我进入 VBA 界面,但当我打开模块时,没有任何反应。
最重要的是,当我尝试保存工作簿时,我只是收到一条错误消息“文档未保存”。
我试图将我的范围分成2。我想要的结果是直到第一个数字之后*。我尝试过将文本添加到列中,并尝试使用 Textbefore 和 textafter,但由于长度不同,它不起作用。这就是我正在挣扎的地方。
| 我有 | 我需要 | 我需要 |
|---|---|---|
| ABC*K*1234*456 | ABC*K*1234 | 第456章 |
| AB*L2*987*456*459*326 | AB*L2*987 | 456*459*326 |
| AB*BCD*EFGJKL*DEG*22*1971 | AB*BCD*EFGJKL*DEG*22 | 1971年 |
| GHI*FG*HIGUI*02*1971*1985 | GHI*FG*HIGUI*02 | 1971*1985 |
一级方程式
=TEXTBEFORE(A1,"*",2)
公式二
=TEXTAFTER(A1,"*",3)
不知道为什么 * 从 markdown 表中删除。excel 中的丝网打印。忽略之间的空格,当没有空格时,Markdown 不会读取。
C 列需要公式,而不是 VBA?见下文。 在此输入图像描述
| A | 乙 | C |
|---|---|---|
| 红色的 | 1 | 红1 |
| 黄色的 | 2 | 红2 |
| 蓝色的 | 3 | 红3 |
| 4 | 红4 | |
| 黄色1 | ||
| 黄色2 | ||
| 黄色3 | ||
| 黄色4 | ||
| 蓝色1 | ||
| 蓝色2 | ||
| 蓝色3 | ||
| 蓝色4 |
excel中有多行。这是示例模式:
/xxx/yyy/zzz////
/xxx/yyy/zzz//
/xxx/yyy/zzz//////
/xxx/yyy/zzz
Run Code Online (Sandbox Code Playgroud)
删除斜杠后,输出将如下所示:
/xxx/yyy/zzz
/xxx/yyy/zzz
/xxx/yyy/zzz
/xxx/yyy/zzz
Run Code Online (Sandbox Code Playgroud)
请告诉我去掉斜杠的Excel公式。最后一个示例模式不包含任何斜杠。谢谢!
我尝试了这个公式,但它不起作用 -
=IF(RIGHT(A1,1)="/",LEFT(A1,LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))+1),A1)
Run Code Online (Sandbox Code Playgroud) 我有一个动态数据数组,其中有一列包含文本形式的持续时间,我将其转换为数字时间值。我使用 TEXPSPLIT 将文本值形式的持续时间拆分为天、小时、分钟、秒,然后将每个数字转换为数字。当文本持续时间是表中的列时,TEXTSPLIT 起作用,但当它是动态数组中的列时,TEXTSPLIT 不起作用。
使用“”分隔符,动态数组列上的 TEXTSPLIT 仅输出第一个数组元素,而静态文本上的 TEXTSPLIT 则按预期输出完整数组。
=TEXTSPLIT(A2#," ")
Run Code Online (Sandbox Code Playgroud)
我尝试在 LET 中使用它,使用 CHOOSECOLS,使用 LAMBDA,但没有成功。无论出于何种原因,该函数似乎都能看到输入,但在溢出范围内时会以不同的方式对待它。
任何有关如何解决此问题的想法将不胜感激。
我有一个非常大的电子表格,包含 50,000 多行。它们是相机陷阱事件的记录。我有一个名为“NewEvent”的列,其中仅包含 TRUE 或 FALSE 值,该值基于相机陷阱是否作为新事件触发。但是现在我需要按照事件发生的顺序对事件进行编号,并将这些值记录在新列中。例如,第一个 TRUE 将在新列中标记为事件 1,并且其后的所有 FALSE 值也仍将是事件 1 的一部分,直到出现另一个 TRUE(即事件 2),依此类推。我开始手动执行此操作,但意识到这将花费我相当多的时间。有没有办法在 Excel 中使用 VBA 或宏等来自动执行此操作?请看下面的例子:
| 新事件 | 事件编号 |
|---|---|
| 真的 | 1 |
| 错误的 | 1 |
| 错误的 | 1 |
| 错误的 | 1 |
| 真的 | 2 |
| 错误的 | 2 |
| 错误的 | 2 |
| 真的 | 3 |
| 错误的 | 3 |
| 错误的 | 3 |
| 错误的 | 3 |
| 错误的 | 3 |
我尝试在宏中尝试使用代码编辑器,但我对此很陌生,发现它对我来说有点复杂。太感谢了!
我们来看看微软是怎么说的:
https://support.microsoft.com/en-us/office/reduce-function-42e39910-b345-45f3-84b8-0642b568b7cb
它说:
Reduce 函数通过对每个值应用 LAMBDA 并返回累加器中的总值,将数组缩减为累加值。
我已经使用Reduce公式做了一些练习,当未指定初始值时感到困惑。
我首先尝试一个简单的例子
这个例子告诉我,如果没有指定初始值,那么第一个累加器值为空。
然后我尝试了另一个:
该公式计算了4次,对应于数组元素的数量(即100,101,102,103)。
所以我们在底部得到了4 堆E3:G5和初始值 200 。
一切都是可以理解的,直到我尝试删除初始值:
我的问题是:
1.在示例2中,v(100,101,102,103)没有显示在结果数组中。
example3 的结果数组底部如何包含“100”?
LAMBDA 中的公式(即 VSTACK(E3:G5,a))甚至不包含“v”。
如果未指定初始值,累加器“a”是否将数组中的第一个元素作为其值?
2.结果数组只有3堆E3:G5。为什么?
我的猜测是,当累加器“a”不为空时,计算才会开始执行它必须执行的操作(vstack)。因此,它“消耗”一次计算才能将 100 作为其初始值。我的猜测正确吗?
我想为 Excel 图表中的 x 轴创建数字格式。
如果我手动将其设置为“MM/JJ”,我会得到正确的日期打印为“04/23”。如果我使用 vba 设置数字格式
Dim cht As Chart
Set cht = ws.Shapes.AddChart2(240, xlXYScatterLinesNoMarkers).Chart
cht.Axes(xlCategory).TickLabels.NumberFormat = "MM/YY"
Run Code Online (Sandbox Code Playgroud)
结果是“MM.YY”
计算机的语言是德语。
我有一列年龄和一列这些年龄的计数。我需要将它们转换成一个可以运行平均值等统计函数的集合。例如:
| 年龄 | 数数 |
|---|---|
| 14 | 2 |
| 16 | 1 |
| 17 号 | 3 |
这需要变成 (14,14,16,17,17,17),以便我可以更轻松地使用 =average 或 =stddev 。我已经找到了一种根据公式计算平均值的解决方法,但仍停留在标准差上。可能有一个简单的解决方案,但我无法在谷歌上找到它。