将结构存储在excel单元格中?

时间:2012-10-25 19:55:20

标签: excel data-structures excel-formula

嘿伙计们,

有没有办法在Excel单元格中存储数据结构?我如何从中获取和获取数据?

我希望使用类似的东西    

  • 将struct放在单元格A1中:=putstruct("data1", 123, "data2", "hello", "data3", MMULT(matA,matB))
  •    
  • 从A1获取单元格B1:=getstruct("A1", "data1")
  • 使用结构解决了一个(几个)问题:如果我需要引用计算矩阵,首先我必须在电子表格上展开(即显示)整个矩阵,然后将其命名为开始使用它的范围。但如果矩阵大小发生​​变化,那就开始变得令人头痛......

    任何帮助表示赞赏!

    <子> 顺便说一句,我发现了类似的问题herehere.

    2 个答案:

    答案 0 :(得分:1)

    是的,它可能做但复杂。
    putstruct需要使用句柄将数据存储在某个内部全局数据池中,并将句柄放在A1中的数据结构中 然后,Getstruct使用A1中的句柄返回数据。
    涉及的一些困难是;

    使GetStruct在数据发生变化时正确返回数据,以便在保存的工作簿中保存全局数据,以便在打开工作簿时重新显示该数据。当具有句柄的单元格被覆盖时清除全局数据或删除

    答案 1 :(得分:0)

    这可能对你有用...... 首先在新工作簿中运行此宏:

    Sub AddMacroFunctions()
     Sheets.Add Type:=xlExcel4MacroSheet
     [B2] = "=ARGUMENT(""Name"",2)"
     [B3] = "=ARGUMENT(""Value"",95)"
     [B4] = "=RETURN(SET.NAME(Name,Value))"
     [B6] = "=RESULT(95)"
     [B7] = "=ARGUMENT(""Value"",95)"
     [B8] = "=RETURN(EVALUATE(Value))"
     Names.Add "Put", Range("B2"), , xlFunction
     Names.Add "Get", Range("B6"), , xlFunction
     ActiveSheet.Visible = False
    End Sub
    

    ...现在,对于给定的示例,您可以在活动表上输入这些公式:

    A1: =AND(Put("data1",123),Put("data2","hello"),Put("data3",MMULT({1;2},{3,4})))
    B1: =IF(A1,Get("data1"))
    

    数据将存储在使用宏创建的宏表中。如果您更改A1中公式中的值,B1中的值会自动更新。

    这也可以通过将数据存储在自定义名称mystruct.data1中来适应putstruct / getstruct方法,并且可以将工作簿保存为插件,以便可以从任何工作簿访问这些函数。