如果我有一个串联字符串“ |#|#|#| ... |#|”,我该如何对每个数字应用乘数并更新串联文本?例如,对于| 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)
使用公式,如何将因子应用于连接的数据并更新各个数字?
我受以下条件的约束:
我可以使用数组公式提取单个数字。我什至可以将这些数字乘以因子以产生数组结果。但是,我无法重建连接的数据,因为CONCATENATE在数组上不起作用。我也尝试过SUBSTITUTE,但是无法遍历“ |”分隔符。我只能替换给定的句段(例如,将“ | 2 |”的所有条目更改为“ | 4 |”)。嵌套SUBSTITUTE或使用单独的列均无效,因为它可能涉及数十个实例。
只需在级联数据上添加一些信息:
答案 0 :(得分:0)
高水平
第 1-4 部分
下面的第 1-4 部分是与以下屏幕截图相关的功能:
我也已上传/修改以满足 Google 表格的要求(请参阅 here) 第 1 部分和第 2 部分:
相似之处在于它们依靠 FilterXML 技术来计算组件/术语,并分别拆分单元格:
第 1 部分:
=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")))
注意:谷歌表格无法识别 FilterXML,因此相应地修改了技术/功能。例如,上面可以使用第 2 部分中拆分单元的计数来确定(比上面提出的方法更容易/更简单,尽管由于位于拆分单元右侧的任何单元会干扰这种方法的普通功能,因此鲁棒性较差) .
第 2 部分:
它要么是手动方法,要么是一系列花哨的“中”和/或替换/左/右函数,或者是以下 FilterXML 代码,根据各种来源(例如 here)应与 Excel 2007 兼容:
=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"))
可以看出与第 1 部分(重新:FilterXML)的共性 - 唯一的区别是计数(第 1 部分)已被转换(乘法因子,如 O.P 的 Q 中给出)所取代。
第 3 部分
这里没什么特别的 - 一个简单的连接(我知道,这与“递归”替换函数相去甚远,但是嘿 - 它可以解决问题,并且始终可以放置在原始工作表的镜像副本中以避免空间问题/细胞交互问题)
=IF(H12="","",IF(G24="","|","")&G24&H12&"|")
第 4 部分
由于第 1 部分中导出的项数,偏移函数可以轻松确定与“转换”值的连接“构建”相关的最终单元格(根据第 3 部分):
=OFFSET(H31,0,E31-1,1,1)
其他/各种
存在各种其他建议和“变通方法”;不幸的是,这些似乎以一种或另一种方式未能满足规定的先决条件,videlicit:
a) 基于函数/公式 b) 没有 VB c) Excel 2007 d) 动态(可变/未知数量的术语)
对此给予零分,但我认为这是一个有趣的发现! (如果仍然有疑问,如果我不删除除轴标签之外的所有内容,“图表”会是什么样子......):
以上相关其他项目的大量参考资料,包括研究领域,如下:
还有一件事......
在真正的哥伦布风格的作案手法中,考虑了其他想法/方法:
6 | 10 | 22 | |||
---|---|---|---|---|---|
6 | 10 | 22 | |||
6 | 10 | 22 |
在副本“通过”原始(第一行)之后,我们有所需的组合(22,10,6)(在“对角线”这样的矩阵上)。这类似于傅立叶变换的工作方式(有点);但除此之外,构建这样的矩阵很诱人,但现阶段无法打扰。
结果可能是有人想出的更简单的方法(根据我考虑过的各种来源,我不会是唯一感到惊讶的人...)