【问题标题】:Building an Excel formula based on cell references基于单元格引用构建 Excel 公式
【发布时间】:2016-10-06 20:37:51
【问题描述】:

有什么方法可以根据用户输入(包括逻辑函数)构建公式?例如,用户可以输入

A1 必须是 1

A1 将在一个单元格中(我可以使用间接), 在相邻的单元格中,结果公式将是 =IF(A11, TRUE, FALSE) ,但下次用户希望公式为

A1>1

因此单元格将有 A1(再次使用间接结果公式)和 > 在相邻单元格中导致 IF(A1>1,TRUE,FALSE)

【问题讨论】:

  • 应该始终是比较中使用的相同单元格(此处为 A1)?还是应该处理像“C23=5”这样的输入?
  • 只需要比较像 ,=, 还是需要更复杂的语句?
  • 它总是同一个单元格。它实际上会稍微复杂一些,因为将命名度量,并且我将使用 VLOOKUP 来查找度量引用的实际单元格值,但为了简单起见,我仅使用 A1 作为示例。我只需要您列出的四个操作符 编辑:为了澄清,用户实际上可能在“收入”旁边的框中放置了一个“”,但我将 VLOOKUP “收入”指向一个指向 A1 的间接案例

标签: excel


【解决方案1】:

一种方法是评估每种可能性 (,>=,

【讨论】:

  • 这将是要走的路,但我有 8 个不同的指标和 3 个标准(“”、“”),所以对于所有组合
  • 指标可以是基于间接函数的动态。您只需要构建一次标准(、)列表。
【解决方案2】:

您可以使用 Data 菜单中的 Convert 来拆分每个单元格的包含使用空格作为分隔符。您选择 L 列来编写您的公式(例如避免由于拆分操作而导致重叠),然后您可以通过连接好的单元格的内容来组装您的标准以开发一个公式。

如果单元格分别包含符号“”,您可以通过 CHER(60)、CHAR(61) 或 CHAR(62) 检查。

希望这能有所帮助!

【讨论】:

  • 我认为这已经有所进展,但如果没有硬键控运算符,我仍然无法得到公式来评估。因此,如果我连接 =A1&CHAR(60)&A2 (例如),我得到 'A1'=A1
【解决方案3】:

我举个例子,两行:

  1. A1 必须不同于一个 1
  2. A1 必须等于或大于 零 > 0

在单元格 B1 中,我将有 A1。在下一个单元格 C1 中,我将有“必须”。在 D1 中“是”,在 E1 中“不同”等等.. 在 H1 中“”,我在 I1 中有“1”。 因此,第二行从单元格 B2 到 K2,在 J2 中我有“>”和 K2 到“0”。 我在单元格 A1 中输入 5,在单元格 A2 中输入 0。 在单元格 M1 中,我在下面键入此行以获得我的公式:

 =" = IF(" & "A1" & IF(LEN(C1)>2;"";IF(LEFT(C1;1)="<";C1;IF(LEFT(C1;1)="=";C1;IF(LEFT(C1;1)=">";C1;IF(ISNUMBER(C1);C1;"")))))&IF(LEN(D1)>2;"";IF(LEFT(D1;1)="<";D1;IF(LEFT(D1;1)="=";D1;IF(LEFT(D1;1)=">";D1;IF(ISNUMBER(D1);D1;"")))))&IF(LEN(E1)>2;"";IF(LEFT(E1;1)="<";E1;IF(LEFT(E1;1)="=";E1;IF(LEFT(E1;1)=">";E1;IF(ISNUMBER(E1);E1;"")))))&IF(LEN(F1)>2;"";IF(LEFT(F1;1)="<";F1;IF(LEFT(F1;1)="=";F1;IF(LEFT(F1;1)=">";F1;IF(ISNUMBER(F1);F1;"")))))&IF(LEN(G1)>2;"";IF(LEFT(G1;1)="<";G1;IF(LEFT(G1;1)="=";G1;IF(LEFT(G1;1)=">";G1;IF(ISNUMBER(G1);G1;"")))))&IF(LEN(H1)>2;"";IF(LEFT(H1;1)="<";H1;IF(LEFT(H1;1)="=";H1;IF(LEFT(H1;1)=">";H1;IF(ISNUMBER(H1);H1;"")))))&IF(LEN(I1)>2;"";IF(LEFT(I1;1)="<";I1;IF(LEFT(I1;1)="=";I1;IF(LEFT(I1;1)=">";I1;IF(ISNUMBER(I1);I1;""))))) & IF(LEN(J1)>2;"";IF(LEFT(J1;1)="<";J1;IF(LEFT(J1;1)="=";J1;IF(LEFT(J1;1)=">";J1;IF(ISNUMBER(J1);J1;""))))) & IF(LEN(K1)>2;"";IF(LEFT(K1;1)="<";K1;IF(LEFT(K1;1)="=";K1;IF(LEFT(K1;1)=">";K1;IF(ISNUMBER(K1);K1;""))))) & ";" & TRUE & ";" & FALSE & ")"

我将我的公式应用于 M2 单元格。 复制 M1 和 M2 单元格后,我将按值粘贴到 N1 中。 我将 N1 et N2 中公式开头的空格替换为空,然后公式显示结果。 如果您对这个公式有疑问,请告诉我,因为我是用 Excel 法语开发的。我会把完整的文件发给你。

【讨论】: