VBA中类似Ruby的哈希函数

时间:2014-10-01 19:38:36

标签: vba excel-vba excel

所有

我目前正在Excel中编写宏,并遇到了障碍。我通常用Ruby编写代码,所以我可能不会从正确的角度处理这个问题。

我知道这篇文章已被VBA标记,但我觉得我需要在Ruby中解释我的思维过程。我试图在VBA中创建一个哈希表,允许我根据标识符查找与日期相关的值。在ruby中,我将使用哈希实现此功能,如下所示。

hash = { 9385 => { '10/1/2014' => [2, 4, 6, 1, 6] } }

然后将以这种方式访问​​这些值:hash[9385]['10/1/2014'] => [2, 4, 6, 1, 6]

散列的密钥为9385,这样我就可以访问10/1/2014的关联数据并访问其中的数组。

我试图通过链接VBA中的字典对象来重新创建此功能。但是,我无法让字典对象重新创建可以在Ruby中使用哈希找到的层次结构。

有什么方法可以创建这种类型的功能吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我们在Basic中有很多数据类型。我不认识Ruby,但字典会自行解决。

阵列。

字典

集合

断开连接的记录集

以及列表/数组的.NET类也可以在Basic中使用。 EG,一个数组对象(与数据类型不同),排序一个,等等。添加对mscorelib的引用。

我使用断开连接的记录集而不是字典。这是一个随机排序的代码段,它从stdin中读取行并在断开连接的记录集中随机化它们并写入stdout。

这是vbscript,但vbscript是合法的vb6。

cscript randomise.vbs <filename.txt


Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout

    Randomize 
    Set rs = CreateObject("ADODB.Recordset")
    With rs
        .Fields.Append "RandomNumber", 4 

        .Fields.Append "Txt", 201, 5000 
        .Open
        Do Until Inp.AtEndOfStream
            .AddNew
            .Fields("RandomNumber").value = Rnd() * 10000
            .Fields("Txt").value = Inp.readline
            .UpDate
        Loop
        .Sort = "RandomNumber"
        Do While not .EOF
            Outp.writeline .Fields("Txt").Value

            .MoveNext
        Loop
    End With