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

大家好,

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

我期望使用类似的东西

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

    任何帮助感激!

    顺便说一下,我在这里和这里发现了类似的问题。

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

    只要数据发生变化,GetStruct就会正确返回数据
    将全局数据保存在已保存的工作簿中,以便在工作簿打开时重新显示
    清除具有句柄的单元格时删除或删除全局数据

    这可能适用于你…首先在一个新的工作簿中运行这个macros:

     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 

    现在对于给定的例子,你可以在activesheet上input这些公式:

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

    数据将存储在macros中创build的macros表中。 如果在A1更改公式中的值,则B1的值自动更新。

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