当前位置: 首页 > 面试题库 >

在vba中的关联数组,例如php

孟胤
2023-03-14
问题内容

我需要您的帮助,以便使用VBA在Microsoft Excel中构建分析。

我有一个带有y列和n行的数据表

Line Number  Firstname  Lastname  Country  Training Hours  Training Status
1            John       Smith     USA      1               Completed
2            Henri      Dupont    France   1               Completed
3            Paul       Walker    USA      25              Incomplete
4            Ron        Howard    USA      10              Completed

而且我想在php中使用数组,但使用VBA

For i = 1 To nblines
    If(array[i]["Country"] = "USA" And array[i]["Training Status"] = "Completed") Then
        myval = myval + array[i]["Training Hours"]
    End If
Next

myval应该是11

不幸的是我找不到解决方案。我尝试过字典,集合和数组,但是没有成功。任何的想法?


问题答案:

您可以对打开的工作簿中的工作表进行SQL查询(与其他任何工作簿相同)。在这种情况下,查询字符串将如下所示:

SELECT SUM([Training Hours]) AS Myval FROM [data sheet$] WHERE Country = 'USA' AND [Training Status] = 'Completed';

这是代码

Sub TestSQLRequest()

    Const adOpenStatic = 3
    Const adLockOptimistic = 3
    Const adCmdText = &H1

    Select Case LCase(Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")))
        Case ".xls"
            strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='" & ThisWorkbook.FullName & "';Mode=Read;Extended Properties=""Excel 8.0;HDR=YES;"";"
        Case ".xlsm"
            strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source='" & ThisWorkbook.FullName & "';Mode=Read;Extended Properties=""Excel 12.0 Macro;HDR=YES;"";"
    End Select

    With CreateObject("ADODB.Connection")
        .Open strConnection
        With .Execute("SELECT SUM([Training Hours]) AS Myval FROM [data sheet$] WHERE Country = 'USA' AND [Training Status] = 'Completed';")
            Myval = .Fields("Myval")
        End With
        .Close
    End With

    MsgBox Myval

End Sub

在查询字符串中,带空格的列名称以及包含数据的工作表名称应放在方括号中,后跟$。不言而喻,查询无法访问数据,在对工作表进行一些更改之后,该数据并未保存到文件中。请注意,Excel 8.0提供程序不适用于64位Excel版本,请尝试改用Excel 12.0提供程序(第二个strConnection分配)。



 类似资料:
  • SystemTap支持关联数组。关联数组就像其它编程语言中的map/dict/hash,你可以把它看作由互不相同的键所组成的数组,每个键都有一个关联的值。 关联数组需要定义为全局变量。访问关联数组的值的语法跟awk类似,就是array_name[index_expression]。 这里的array_name指关联数组的名字,index_expression指数组中某个唯一的键。比如在下面的例子中

  • 问题内容: 有以下查询结果:(key1和key2可以是任何文本) 我希望将数据存储在网格(可能是数组)中,像这样 循环 所有记录: 在PHP中,使用关联数组非常容易: 但是在JavaScript这样的关联数组中不起作用。阅读大量教程之后,我所能得到的就是: 但不起作用。我尝试了对象数组,但是对象属性不能是自由文本。我阅读教程的时间越长,我就越困惑。 任何想法都欢迎:) 问题答案: 只需使用常规的J

  • 我有一个API,它总是使用关联数组回答,其中只有一个条目包含包含最终结果的键“数据”。结果可以是一个对象或对象数组。这是API输出: 我怎样才能让swagger在文档中显示数据,即键的名称? 至于现在,我只得到大摇大摆的嵌套数组: 我需要数据键在从API返回时以swagger的形式显示。这可行吗?我还没有找到任何解决办法…:/ 我的yaml文件的部分内容: 任何帮助都将不胜感激:) 干杯

  • 主要内容:数组声明,赋值给数组,多维数组,ReDim语句,数组方法我们都知道,一个变量是一个存储值的容器。 有时,开发人员希望一次可以在一个变量中保存多个值。 当一系列值存储在单个变量中时,则称为数组变量。 数组声明 数组声明的方式与声明变量相同,只是数组变量的声明使用括号。 在下面的例子中,括号里提到了数组的大小。参考以下示例 - 在上面代码中, 虽然数组大小被指定为,但是当数组索引从零开始时,它可以保持个值。 数组索引不能是负数。 VBScript数组可以在

  • 问题内容: 我需要使用JavaScript来存储一些统计信息,就像在C#中那样: JavaScript中是否有类似的东西? 如何以这种方式存储值? 问题答案: 使用JavaScript对象作为关联数组。 关联数组:简单来说,关联数组使用String而不是Integer数字作为索引。 创建一个对象 Javascript允许您使用以下语法向对象添加属性: 相同的替代语法是: 如果您还可以使用以下语法创

  • 问题内容: 我有这种格式的数组: 如何按该字段的降序对该格式的数组排序?是否有内置功能? 问题答案: 使用并提供您自己的功能进行订购,例如