具有字符串操作的复杂跨工作表 Excel 公式

Complex cross-worksheet Excel formula with string manipulation

我正在从 C# 代码生成 Excel 工作簿,但代码将在那里结束,因为工作簿必须可分发给无法访问 VSTO 内容的人。

工作簿包含:

A) “工作表 1”包含一个下拉列表,根据所选项目给出“1”或“2”。

B) “工作表 1”在网格布局中也有几个单元格,当前包含“1”。

C) 在“工作表 2”上,单元格 A1 和 A2 中有字符串值(与下拉项相关),例如 C01010101 C01010102

D) 在“工作表 3”上与工作表 1 单元格相同的位置(见上面的 B)有相关的字符串值,如下所示:(注意这些值可以是任意长度)

复选框|001|C010101010101

复选框|002|C010101010102

复选框|002|C010101010103

我需要做的是在 B 的单元格中添加一个公式,这样它们就不会只包含“1”,而是根据以下逻辑得出一个值:

  1. N1 = 下拉列表的选定索引 (1-2)(在上面的 A 中)

  2. S2 = 来自“工作表 2”的字符串值,单元格范围“A”& N1

  3. S3 = 来自“工作表 3”的第三个管道分隔字段值,来自与“工作表 1”中对应的单元格(即相同地址、C5、B6 等)

  4. 如果S2与S3的左端匹配,return“1”否则return“0”

最后,如果可能的话,我想给单元格上色,这样如果 returned 它们有灰色背景,但如果有人用 0 手动改写单元格,这必须保持不变。

我不希望任何人提供完整的解决方案 - 当然,那会很棒! - 但所有关于如何实现这一目标的建议都将不胜感激!

[编辑]

附上图片。

请注意,虽然输出网格显示有刻度,但实际上包含“1”(如果选中)或“0”(如果未选中)。

这是公式将要替换的“1”,因为如果选择了适当的列表项,则单元格只能是 "valid" - 如果这有意义的话:$

[/编辑]

[编辑2]

好的,这是我目前的进度:

=IF(LEFT(MID(F17,FIND("|",F17,FIND("|",F17)+1)+1,999),LEN(E17))=E17,1,0)

对于这个简化的 (:o) 示例,F17 是包含竖线分隔字符串的单元格,E17 包含要匹配的下拉值。

现在我需要研究如何使用从下拉列表中读取的行号来引用范围...

[/Edit2]

这是我得出的最终公式:

=IF(
    LEFT(
        MID(
            Sheet2!V19,
            FIND(
                "|",
                Sheet2!V19,
                FIND(
                    "|",
                    Sheet2!V19
                )+1
            )+1,
            999),
        LEN(
            INDIRECT(
                "Sheet3!"&ADDRESS(T16,1)
            )
        )
    )=INDIRECT(
        "Sheet3!"&ADDRESS(T16,1)
    ),
    1,
    0
)

其中 Sheet2 是包含管道分隔字符串的 sheet,Sheet3A 包含下拉查找值,V19 是当前单元格,T16 是包含下拉菜单的单元格。

根据需要,这会导致当前单元格显示 1 如果下拉查找匹配竖线分隔字符串中的第三个单词,否则显示 0

我要去酒吧...