| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在 Excel 中从一列数据生成一个数组?
如何在 Excel 中从一列数据生成一个数组?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:03:30
问:

您好,脚本专家!如何在 Excel 中从一列数据生成一个数组?

-- AH

答:

您好,AH。显然,没有一位脚本专家需要节食(打消这个念头!),但我们的确知道有一个历史悠久的节食策略的理论是小口小口地吃:而不是几大口就吞完食物,您要细嚼慢咽,您嚼的次数越多,身体就越会觉得饱了。说实话,我们不知道小口吃的策略是否可以有效节食,但是,对于在 Excel 中从一列数据生成一个数组,它确实很有效。

那么在本例中小口吃的策略是什么呢?我们不知道如何获取一列中的所有数据,也不知道如何只用一行代码,就神奇地将其转换为一个数组。不过没关系,因为可以很容易地从一个单元格中获取一个值,将该值存储在数组中,然后获取下一个单元格中的值,将存储在数组中,如此反复。换句话说,我们通过一个一个获取电子表格中的数据来生成数组,如下所示:

Dim arrExcelValues()



Set objExcel = CreateObject("Excel.Application")

Set objWorkbook = objExcel.Workbooks.Open("C:/Scripts/Test.xls")

objExcel.Visible = True



i = 1

x = 0



Do Until objExcel.Cells(i, 1).Value = ""

    ReDim Preserve arrExcelValues(x)

    arrExcelValues(x) = objExcel.Cells(i, 1).Value

    i = i + 1

    x = x + 1

Loop



objExcel.Quit



For Each strItem in arrExcelValues

    Wscript.Echo strItem

Next

在使用该代码之前,我们应该注意到:我们假定了您有一个电子表格(在该电子表格中要被检索的数据是在 A 列中);除此之外,我们还假定数据是从 A1 单元格开始的,并向下延续,并且在整列中没有空白单元格。
如果您的电子表格与上述不一样(例如,如果它有一个标题行或包括空白单元格),则您必须根据情况相应地调整代码。

现在,让我们看看那段代码。我们先定义了一个名为 arrExcelValues 的动态数组,正如您可能预料到的,我们将使用从电子表格获取的值填充该数组。

Dim arrExcelValues()

然后创建 Excel.Application 对象的一个实例,使用 Open 方法来打开文件 C:/Scripts/Test.xls,再将 Visible 属性设置为 True(这样我们就能够从屏幕上看到电子表格了)。

接下来分别向两个计数器变量 ix 赋值,如下所示:

i = 1

x = 0

我们将使用 i 来跟踪我们在电子表格中的位置;因为我们的数据是从第 1 行开始的,所以将该值设置为 1。同时,我们将使用 x 来跟踪我们在数组 arrExcelValues 中的位置。因为数组中第一项始终是 0 项,所以我们将 x 的起始值设置为 0。

接下来构建一个 Do Until 循环,该循环将一直循环下去,直到遇到 A 列中的空白单元格;该代码行如下所示:

Do Until objExcel.Cells(i, 1).Value = ""

在该循环中,我们使用 ReDim Preserve 方法来调整数组 arrExcelValues 的大小(并将当前所有数据保存在该数组中)。向 ReDim Preserve 传递值 x,它表示数组的大小。然后将该数组中当前项的值设置为电子表格的单元格 A1(第 1 行,第 1 列)的值。

ReDim Preserve arrExcelValues(x)

arrExcelValues(x) = objExcel.Cells(i, 1).Value

换句话说,第一次执行循环时,我们获取了单元格(第 1 行,第 1 列)的值并将其存储为数组项 0。明白了吗?然后将两个变量的值递增一:

i = i + 1

x = x + 1

为什么会是这样?因为第二次执行循环时,i 将等于 2,这意味着我们将获取第 2 行第 1 列的值。同样,x 的值将为 1,这意味着我们将向数组中的项 1 赋值(因为数组中的第一项为项 0,数组中的第二项只能为项 1。)然后递增变量、再循环,重复该过程。该过程将一直继续,直到遇到 A 列中的空白单元格。

一旦遇到了空白单元格,我们将调用 Quit 方法来关闭 Excel 实例,然后使用一个简单的 For Each 循环来回显 arrExcelValues 中的项,这只不过是表明我们确实使用电子表格中的值生成了一个数组:

For Each strItem in arrExcelValues

    Wscript.Echo strItem

Next

快速、简单,保证吃不胖噢。您还能要求什么呢?

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览