嘿伙计们,
有没有办法在Excel单元格中存储数据结构?我如何从中获取和获取数据?
我希望使用类似的东西
=putstruct("data1", 123, "data2", "hello", "data3", MMULT(matA,matB))
=getstruct("A1", "data1")
使用结构解决了一个(几个)问题:如果我需要引用计算矩阵,首先我必须在电子表格上展开(即显示)整个矩阵,然后将其命名为开始使用它的范围。但如果矩阵大小发生变化,那就开始变得令人头痛......
任何帮助表示赞赏!
答案 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方法,并且可以将工作簿保存为插件,以便可以从任何工作簿访问这些函数。