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

时间:2015-01-27 14:47:02

标签: excel excel-formula formula

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

工作簿包含:

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

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

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

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

复选框| 001 | C010101010101

复选框| 002 | C010101010102

复选框| 002 | C010101010103

我需要做的是在B处的细胞中添加一个公式,而不仅仅是包含" 1"它们根据以下逻辑得出一个值:

  1. N1 =下拉选择索引(1-2)(上面A中)

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

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

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

  5. 最后,如果可能的话,我想为单元格着色,这样如果返回0则它们具有灰色背景,但如果有人用0手动改写单元格,则必须保持不变。

    我不希望任何人提供整个解决方案 - 当然这会很棒! - 但是我很高兴收到关于如何实现这一目标的所有建议!

    [编辑]

    附图片。

    请注意,虽然输出网格以刻度显示,但实际上这些包含" 1"如果勾选或" 0"如果没有。

    " 1"公式将被替换,因为单元格应该只有"有效"如果选择了适当的列表项 - 如果有意义:$

    The grid of cells (B) The grid display

    [/编辑]

    [EDIT2]

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

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

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

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

    [/ EDIT2]

1 个答案:

答案 0 :(得分:0)

这是我提出的最终公式:

=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是包含管道分隔字符串的工作表,Sheet3A包含下拉查找值,V19是当前单元格,{{1是包含下拉列表的单元格。

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

我要去酒吧......