如何在排序前使用条件 'if' 对列进行排序?

How can I sortbycolumns with a conditional 'if' before the sort?

我想使用以下公式按日期对列表库进行排序:

SortByColumns(
    AddColumns(
        Tabela4;
        "CalcDate";
        Max(
            DateValue(Data)+Qtde_dias_para_contato;
            DateValue(Data_cotação)+Qtde_dias_para_contato;
            DateValue(data_contato_1)+Qtde_dias_para_contato;
            DateValue(data_contato_2)+Qtde_dias_para_contato;
            DateValue(data_contato_3)+Qtde_dias_para_contato;
            DateValue(data_contato_4)+Qtde_dias_para_contato;
            DateValue(data_contato_5)+Qtde_dias_para_contato;
            DateValue(data_contato_6)+Qtde_dias_para_contato;
            DateValue(data_contato_7)+Qtde_dias_para_contato;
            DateValue(data_contato_8)+Qtde_dias_para_contato;
            DateValue(data_contato_9)+Qtde_dias_para_contato;
            DateValue(data_contato_10)+Qtde_dias_para_contato;
            DateValue(data_contato_11)+Qtde_dias_para_contato;
            DateValue(data_contato_12)+Qtde_dias_para_contato));
    "CalcDate";
    Ascending)

该代码有效,但我需要只有当列 table 具有确定值时才会发生这种情况。

我试过这段代码:

SortByColumns(
    AddColumns(
        Tabela4;
        "CalcDate";
        If(
            Tabela4.finalizado = "";
            Max(
                DateValue(Data)+Qtde_dias_para_contato;
                DateValue(Data_cotação)+Qtde_dias_para_contato;
                DateValue(data_contato_1)+Qtde_dias_para_contato;
                DateValue(data_contato_2)+Qtde_dias_para_contato;
                DateValue(data_contato_3)+Qtde_dias_para_contato;
                DateValue(data_contato_4)+Qtde_dias_para_contato;
                DateValue(data_contato_5)+Qtde_dias_para_contato;
                DateValue(data_contato_6)+Qtde_dias_para_contato;
                DateValue(data_contato_7)+Qtde_dias_para_contato;
                DateValue(data_contato_8)+Qtde_dias_para_contato;
                DateValue(data_contato_9)+Qtde_dias_para_contato;
                DateValue(data_contato_10)+Qtde_dias_para_contato;
                DateValue(data_contato_11)+Qtde_dias_para_contato;
                DateValue(data_contato_12)+Qtde_dias_para_contato)));
    "CalcDate";
    Ascending)

但它不起作用。我该如何编写这段代码?

如果我没理解错的话,如果Tabela4.finalizado为空,您想按计算的日期排序。如果它不是空的,你希望发生什么?如果预期结果是不排序的结果,您可以在 SortByColumns 之外使用 If 表达式:

If(
    Tabela4.finalizado = "";
    SortByColumns(
        AddColumns(
            Tabela4;
            "CalcDate";
            Max(
                DateValue(Data)+Qtde_dias_para_contato;
                DateValue(Data_cotação)+Qtde_dias_para_contato;
                DateValue(data_contato_1)+Qtde_dias_para_contato;
                DateValue(data_contato_2)+Qtde_dias_para_contato;
                DateValue(data_contato_3)+Qtde_dias_para_contato;
                DateValue(data_contato_4)+Qtde_dias_para_contato;
                DateValue(data_contato_5)+Qtde_dias_para_contato;
                DateValue(data_contato_6)+Qtde_dias_para_contato;
                DateValue(data_contato_7)+Qtde_dias_para_contato;
                DateValue(data_contato_8)+Qtde_dias_para_contato;
                DateValue(data_contato_9)+Qtde_dias_para_contato;
                DateValue(data_contato_10)+Qtde_dias_para_contato;
                DateValue(data_contato_11)+Qtde_dias_para_contato;
                DateValue(data_contato_12)+Qtde_dias_para_contato));
        "CalcDate";
        Ascending);
    Tabela4)

请注意 If 条件有些奇怪。 Tabela4 是一个 table(即包含多个记录/行),因此 Tabela4.finalizado 不是字符串,它是一个 table 的字符串值,因此上面的表达式将不起作用。

如果您想按计算日期 对具有 finalizado = "" 的行进行排序,而不显示其他行,那么您可以过滤 table在排序之前:

SortByColumns(
    AddColumns(
        Filter(Tabela4; finalizado = "");
        "CalcDate";
        Max(
            DateValue(Data)+Qtde_dias_para_contato;
            DateValue(Data_cotação)+Qtde_dias_para_contato;
            DateValue(data_contato_1)+Qtde_dias_para_contato;
            DateValue(data_contato_2)+Qtde_dias_para_contato;
            DateValue(data_contato_3)+Qtde_dias_para_contato;
            DateValue(data_contato_4)+Qtde_dias_para_contato;
            DateValue(data_contato_5)+Qtde_dias_para_contato;
            DateValue(data_contato_6)+Qtde_dias_para_contato;
            DateValue(data_contato_7)+Qtde_dias_para_contato;
            DateValue(data_contato_8)+Qtde_dias_para_contato;
            DateValue(data_contato_9)+Qtde_dias_para_contato;
            DateValue(data_contato_10)+Qtde_dias_para_contato;
            DateValue(data_contato_11)+Qtde_dias_para_contato;
            DateValue(data_contato_12)+Qtde_dias_para_contato));
    "CalcDate";
    Ascending)

如果您还需要什么,请说明您的问题,我们将能够帮助您。