E33*_*E33 5 excel concatenation excel-formula substitution
如果我有一个“|#|#|#|...|#|”的串联字符串,我如何将乘数应用于每个数字并更新串联文本?例如,对于 |4|12|8|,乘以因子 2 并将连接的文本更新为 |8|24|16|。
我有三列感兴趣。第一列包含日期,第二列包含数量或因子,第三列将数据连接为格式“|#|#|...|#|” (例如,|2|5|、|2|5|12|、|4|12| 等)。有时,需要对连接的数据应用乘数,并且需要相应地更新各个数字。
一个例子是——
Date Amt Concatenated Data
01/01/18 2 |2|
01/05/18 5 |2|5|
02/06/18 12 |2|5|12|
03/25/18 -3 |4|12|
03/31/18 8 |4|12|8|
04/01/18 F2 |8|24|16| (factor of 2 applied)
04/15/18 12 |8|24|16|12|
04/01/18 F1/4 |2|6|4|3| (factor of 1/4 applied)
Run Code Online (Sandbox Code Playgroud)
使用公式,如何将因子应用于连接数据并更新单个数字?
我受以下条件的约束:
我可以使用数组公式提取单个数字。我什至可以将这些数字乘以因子以产生数组结果。但是,我无法重建连接的数据,因为 CONCATENATE 不适用于数组。我也试过 SUBSTITUTE,但我无法遍历“|” 分隔符。我只能替换给定的段(例如,将“|2|”的所有条目更改为“|4|”)。嵌套 SUBSTITUTE 或使用单个列将不起作用,因为它可能涉及数十个实例。
只是添加一些关于连接数据的信息:
高水平
\n第 1-4 部分
\n下面的第 1-4 部分是与以下屏幕截图相关的功能:
\n\n我还上传/修改了 Google 表格的要求(请参阅此处)\n第 1 部分和第 2 部分:
\n相似之处在于它们分别依赖 FilterXML 技术来计算组件/术语并拆分单元格:
\n第1部分:
\n=COUNT(2*TRANSPOSE(FILTERXML("<AllText><Num>"&SUBSTITUTE(LEFT(MID(D12,2,LEN(D12)-1),LEN(MID(D12,2,LEN(D12)-1))-1),"|","</Num><Num>")&"</Num></AllText>","//Num")))\nRun Code Online (Sandbox Code Playgroud)\n注意:Google Sheets 无法识别 FilterXML,因此相应地修改了技术/功能。例如,可以使用第 2 部分中的分割单元格上的 counta 来确定(比上面提出的方法更容易/简单得多,尽管考虑到位于分割单元格右侧的任何单元格会干扰此方法的普通功能,但鲁棒性较差) 。
\n第2部分:
\n它可以是手动方法、一系列奇特的“中”和/或替代/左/右函数,也可以是以下 FilterXML 代码,根据各种来源(例如此处),该代码应与 Excel 2007 兼容:
\n=IF(LEFT(C12,1)="F",1*SUBSTITUTE(C12,"F",""),1)*TRANSPOSE(FILTERXML("<AllText><Num>"&SUBSTITUTE(LEFT(MID(D12,2,LEN(D12)-1),LEN(MID(D12,2,LEN(D12)-1))-1),"|","</Num><Num>")&"</Num></AllText>","//Num"))\nRun Code Online (Sandbox Code Playgroud)\n可以看出与第 1 部分(re:FilterXML)的共性 - 唯一的区别是计数(第 1 部分)已被替换为转换(乘法因子,如 OP's Q 中给出的)。
\n第三部分
\n这里没什么奇特的 - 一个简单的串联(我知道,这与“递归”替换函数相去甚远,但是嘿 - 它确实有效,并且始终可以放置在原始工作表的镜像副本中以避免空间问题/细胞相互作用问题)
\n=IF(H12="","",IF(G24="","|","")&G24&H12&"|")\nRun Code Online (Sandbox Code Playgroud)\n第 4 部分
\n由于第 1 部分中导出的项数,偏移函数可以轻松确定与“转换”值的串联“构建”相关的最终单元格(根据第 3 部分):
\n=OFFSET(H31,0,E31-1,1,1)\nRun Code Online (Sandbox Code Playgroud)\n其他/各种
\n存在各种其他建议和“解决方法”;不幸的是,这些似乎在某种程度上达不到规定的先决条件,videlicit:
\na) 基于函数/公式\nb) 无 VB\nc) Excel 2007\nd) 动态(可变/未知数量的项)
\n零分,但我认为这是一个有趣的发现!\n(如果仍然有疑问,如果我没有杀死除轴之外的所有内容,这就是“图表”的样子标签...):
\n\n上述相关其他项目的大量参考文献,包括研究领域,如下:
\n\n还有一件事...
\n在真正的哥伦布风格的运作方式中,考虑了其他想法/方法:
\n| 6 | 10 | 22 | |||
|---|---|---|---|---|---|
| 6 | 10 | 22 | |||
| 6 | 10 | 22 |
当副本“通过”原始(第一行)后,我们得到了所需的组合(22,10,6)(在“对角线”这样的矩阵上)。这类似于傅立叶变换的工作原理(有点);但除此之外,构建这样的矩阵很诱人,但在这个阶段无法被打扰。
\n可能会被证明是某人想出的一种更简单的方法(根据我考虑过的各种来源,我不会是唯一感到惊讶的人......)
\n