我在 Excel 工作表中有数据。具体来说,我在列D
和 E
(以及其他一些列)中有数据。我想使用列F
和 G
中的数据,用公式填充列D
和 E
。规则如下:
- 通常,应该与 相同。
Fn
Dn
- 如果是“Depression”或“Hyperinflation”,那么, 和 应该是“Depression”(即,“Depression”将在接下来的三个单元格中重复出现),并且, 和 应该被忽略。 注意:某些文本值有尾随空格,因此需要。
Dn
F(n+1)
F(n+2)
F(n+3)
D(n+1)
D(n+2)
D(n+3)
TRIM()
G
应该E
遵循相同的规则。
第二点隐藏了一个微妙的陷阱。考虑以下数据:
排 | 德 | 埃 | F | G |
---|---|---|---|---|
59 | 沮丧 | 布拉59 | 沮丧 | 布拉59 |
60 | 高于平均水平 | 布拉60 | 沮丧 | 布拉60 |
61 | 沮丧 | 布拉61 | 沮丧 | 布拉61 |
62 | 平均的 | 布拉62 | 沮丧 | 布拉62 |
63 | 平均的 | 布拉63 | 平均的 | 布拉63 |
64 | 高于平均水平 | 布拉64 | 高于平均水平 | 布拉64 |
F59
为“抑郁症”,因为它与 相同D59
。但是,由于D59
为“抑郁症”,
F60
, F61
和 F62
也设置为“抑郁症”,并且D60
, D61
和 D62
被忽略。具体来说,我们忽略D61
也是“抑郁症”的事实,因此我们不将F63
和 设置F64
为“抑郁症”,而是让它们等于D63
和 D64
。
一些已发布的答案(错误地)设置F63
为 F64
“抑郁症”。
編輯:
如果 D 列是“恶性通货膨胀”、“恶性通货膨胀”或“萧条”、“恶性通货膨胀”,您将如何解决?
因此,在 D 列中,如果单元格是“恶性通货膨胀”或“萧条”,并且在接下来的三个单元格中还有另一个“恶性通货膨胀”或“萧条”,则我不想在 F 列中重复它们。因此,D 列接下来三个单元格中的“恶性通货膨胀”或“通货膨胀”将被忽略。
答案1
我认为,使用封闭形式的单细胞公式无法满足问题的要求。考虑以下假设数据以及相应的期望结果(据我了解要求):
排 | 德 | F | ||
---|---|---|---|---|
72 | 蚂蚁 | 蚂蚁 | ||
73 | 蝙蝠 | 蝙蝠 | ||
74 | 猫 | 猫 | ||
75 | 狗 | 狗 | ||
76 | 沮丧 | ← | 沮丧 | ← |
77 | 插图 | 沮丧 | ← | |
78 | 大奖 | 沮丧 | ← | |
79 | 沮丧 | ⇐ | 沮丧 | ← |
80 | 袋鼠 | 袋鼠 | ||
81 | 豹 | 豹 | ||
82 | 沮丧 | ← | 沮丧 | ← |
83 | 旋律 | 沮丧 | ← | |
84 | 夜鹰 | 沮丧 | ← | |
85 | 沮丧 | ⇐ | 沮丧 | ← |
86 | 橙子 | 橙子 | ||
87 | 紫色的 | 紫色的 |
第 83 行和第 84 行与第 86 行和第 87 行之间没有局部差异。我相信,如果不查看整个列,列 F
(或 G
)中的公式就不可能区分这些情况D
。
幸运的是,使用辅助列似乎相当容易。选择两个你不使用的列。它们可以是H
和 I
、 Y
和 Z
、 AF
和 AG
,或者你想要的任何值。我假设你选择H
和 I
。
假设您的数据从第 15 行开始(如您的问题所示),并且单元格H14
和I14
为空(应该是这种情况,因为我假设您没有使用辅助列),请输入
=IF(AND(H14>0,H14<4), H14+1, --OR(TRIM(SUBSTITUTE(D15, CHAR(160), " "))="Depression",TRIM(SUBSTITUTE(D15, CHAR(160), " "))="Hyperinflation"))
进入单元格H15
,然后输入
=IF(H15>1, "Depression", TRIM(SUBSTITUTE(D15, CHAR(160), " ")))
复制到单元格 中F15
。复制F
到 中G
,然后H
向下I
拖动/填充。
辅助列中的值“通常”为 0。当为 0 时, 设置为 (表达式的最后部分)。我们使用是因为文件中的数据有尾随空格,这会导致字符串比较失败。我们使用是 因为文件中的数据有尾随空格,这会导致字符串比较失败H(n-1)
Hn
--OR(D15="Depression",D15="Hyperinflation")
IF
TRIM()
SUBSTITUTE(cell, CHAR(160), " ")
不断裂空间,
无法TRIM()
处理,因此我们必须在调用之前将它们转换为常规空格TRIM()
。如果 等于两个触发词之一,则此OR
表达式为,否则为。 将它们变为 1 和 0。值为 1 表示这是重复块的第一行;值为 0 表示这是另一个正常行。TRUE
Dn
FALSE
--
如果H(n-1)
为正数但小于 4,则表示行 n-1是重复块的一部分(但不是最后一行),因此 Row n必须是重复块的一部分(但不是第一行)。因此我们添加 1(表达式的中间部分IF
),以表示该行 n是重复块的第 2、3 或 4 行。如果 是 4,我们将返回基于 的 设置。H(n-1)
Hn
Dn
列的公式F
表示,如果行 n是重复块的第 2、3 或 4 行,则设置为“Depression”;否则,则设置为等于 。Fn
Dn