1

大家好,

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

我希望使用类似的东西

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

    任何帮助表示赞赏!

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

    4

    2 回答 2

    1

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

    使 GetStruct 在数据更改时正确返回数据,
    将全局数据持久保存在保存的工作簿中,以便在打开工作簿时重新出现,当
    带有句柄的单元格被覆盖或删除时清理全局数据

    于 2012-10-26T08:03:42.093 回答
    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自动更新。

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

    于 2012-10-27T19:06:45.273 回答