动态公式

时间:2014-08-29 09:17:57

标签: excel excel-vba excel-formula vba

我在这张工作表上有一张名为 Column Reo 的工作表是一大堆数据输入,因为在具体的列属性上...

例如:

  1. width
  2. 深度
  3. 身高
  4. 没有。垂直钢筋
  5. dia of bars
  6. 我还有第二张表格,其上有一些名为rages等的固定数据 ......

    例如:

    1. width
    2. 钢筋常数
    3. 连字模式类型计算
    4. 根据柱子和柱子结构载荷等形状,每个韧带图案需要不同的公式。有27种不同的韧带图案类型。

      我已经在"固定数据"上写了公式。将根据具体列属性计算每个lig模式的总长度的工作表,然后在"列reo"上创建一个下拉菜单。使用 VLOOKUP 进行匹配的工作表,问题是我想在实际公式中拖动,以便它动态调整到它被复制到的行并使用该行中的数据计算总长度。

      我希望能够正确解释它,我希望没有VBA就可以完成,但如果需要,那就这样吧!

      修改 以下是文件https://www.dropbox.com/s/c29e0s4g13cr89p/Reo%20calculation%20sheet.xlsx

      的链接

      根据"列reo" -H4下拉菜单中的选择,我希望能够从"固定数据"中提取公式。对应表。但我需要公式来调整它所在的行。

2 个答案:

答案 0 :(得分:1)

作为没有VBA的脏解决方法,您可以将所有类型计算作为单独的列(在列reo表中),然后使用下拉列表选择要为该行返回的这些...丑,但是简单。

如果您愿意使用VBA ......

  1. 在您的&#34;固定数据&#34;中输入您的功能查找文本(开头的撇号),如'=+(('column reo'!C<<row>>*2)+('column reo'!D<<row>>*2))+(('column reo'!C<<row>>/3*2)+('column reo'!D<<row>>*2))(请注意,公式中的行号将替换为<<row>>

  2. 在VBA中,创建函数calculateLig
    Function calculateLig(r As Range) As Double
    Pattern = Application.WorksheetFunction.VLookup(r, Application.Worksheets("fixed data").Range("J:K"), 2, 0)
      Pattern = Replace(Pattern, "<<row>>", r.Row)
      calculateLig = Evaluate(Pattern)
    End Function
    此函数执行VLOOKUP(硬编码范围 - 您可以更改它)以获取文本公式。然后,它将公式中的关键字<<row>>替换为输入单元格的行,并返回其评估。您可以在工作表公式中使用此函数。

答案 1 :(得分:0)

我的解决方案依赖于Morefunc Addon *的EVAL()函数

  1. fixed data表格上重写您的公式,如下所示。包括引号 - 单元格应该只是将其存储为文本,而不是实际执行任何计算:

    这是K5中公式的新表示(要粘贴在L5中): "+((C"&ROW()&"*2)+(D"&ROW()&"4*2))+((C"&ROW()&"/3*2)+(D"&ROW()&"*2))"

  2. 确保你有MORFUNC工作(尝试写'= Eval(“并查看它是否被识别为函数

  3. column reo表单=EVAL(EVAL(VLOOKUP(H4,'fixed data'!J4:L33,3,FALSE)))上写入K4。这将检查相应下拉列表中选择的“Col类型”,然后使用新公式计算相应的“Lig Pattern”

  4. 在“固定数据”表上重复其他公式,并在“列reo”表上复制粘贴所有其他行的公式。


  5. MOREFUNC ADDON