【问题标题】:Conditional LEFT Excel formula (or VBA?) based on formula results?基于公式结果的条件LEFT Excel公式(或VBA?)?
【发布时间】:2017-07-11 18:10:58
【问题描述】:

我在 C2 列中有公式结果,我需要对其执行 LEFT 以修剪单元格公式值

  1. 公式结果的答案中必须包含以下之一 (.OR _ OR -)
  2. 如果单元格中存在上述任一情况,则 LEFT(C2,FIND("the_variable_in_the_formula_answer),C2)-1)

我的 VBA 不是最好的,但我认为我可以使用

 variable = Left(Sheet1.[C2],InStr(Sheet1.[C2],".")-1)

我不知道如何使 .(句号) 、 _(下划线) 或 -(连字符) 成为要查找的变量

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    在第二行尝试这个公式并填写该列:

    =IFERROR(LEFT(Sheet1!C2, AGGREGATE(15,6,SEARCH({".","-","_"},Sheet1!C2),1)-1), "")
    

    它会截断直到{".","-","_"}第一次发现。如果要截断到最后一个找到,请将15 更改为14


    对于您的额外要求:

    =IF(ISNA(C2), D2,
      IFERROR(LEFT(Sheet1!C2,AGGREGATE(15,6,SEARCH({".","-","_"},Sheet1!C2),1)-1),C2))
    

    【讨论】:

    • 像冠军一样工作!然而,一个皱纹,我如何告诉公式(在 D 列中只有两打这样的公式)如果在 D 列中除了 #N/A 之外还有其他任何内容(比如我们将公式复制下来时的 D2 或 D3 ) 放置那个值?如果 D2 中没有错误值,则 C2 中除了 #N/A 之外不会有任何内容
    • @Mike 试试=IF(ISNA(C2), D2, initialFormulaHere)。或者您可以尝试将初始公式中的最后一个"" 替换为D2
    • 嗯.. 还是有问题。如果没有 ("." , "_" , "-") 那么我假设它会退出。这正是我们告诉它要做的事情。我们可以修改它,以便如果没有错误且没有任何搜索字符串,则使用该值?
    猜你喜欢
    • 2013-01-13
    • 2014-12-27
    • 2017-01-20
    • 2013-09-16
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多