将结构存储在Excel单元格中?
大家好,
有没有办法在Excel单元格中存储数据结构? 我将如何放置并从中获取数据?
我期望使用类似的东西
=putstruct("data1", 123, "data2", "hello", "data3", MMULT(matA,matB))
=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方法,并且可以将工作簿保存为插件,以便可以从任何工作簿访问这些函数。