【问题标题】:Create a conditional list using vba and named ranges使用 vba 和命名范围创建条件列表
【发布时间】:2021-01-08 11:41:51
【问题描述】:

用于创建动态列表的公式(使用命名范围MDES,M01DES,...)不起作用:

Range("Tableau1[Code DES d''affectation]").Select
    With Selection.Validation
        .Delete
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "=si(B2=""M"",MDES,si(B2=""M01"",M01DES,si(B2=""P"",PDES,si(B2=""P01"",P01DES,si(B2=""P02"",P02DES,si(B2=""M01"",M01DES,si(B2=""O01"",O01DES)))))))"

你能帮我解决这个问题吗

谢谢

【问题讨论】:

  • si(...) 是否意味着if(...)?还是这个自定义函数?
  • 是的。我还尝试了英文 "=if(B2=""M"",MDES,if(B2=""M01"",M01DES;""""))"
  • 对我来说,最后一个if() 不包含else 部分......所以,你必须用si(B2=""M01"",M01DES,O01DES) 替换:si(B2=""M01"",M01DES,si(B2=""O01"",O01DES))。如果有帮助,请告诉我。
  • 不,它不起作用:它没有显示列表,而是显示公式

标签: vba list conditional-statements


【解决方案1】:

正确的公式是这样的

Range("Tableau1[Code DES d''affectation]").Select Selection.FormatConditions.Add 类型:=xlExpression,Formula1:= _ "=SI(B2=""P02"";NB.SI(P02DES;W2)=0;si(B2=""O01"";NB.SI(O01DES;W2)=0;SI(B2="" P01"";NB.SI(P01DES;W2)=0;si(B2=""P"";NB.SI(PDES;W2)=0;si(B2=""M"";NB.SI( MDES;W2)=0;SI(B2=""M01"";NB.SI(M01DES;W2)=0;SI(B2=""O"";NB.SI(ODES;W2)=0)) )))))"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多