电子表格函数中返回数组

2024-03-29

下面的代码返回一个数组。我想在电子表格中使用它作为 Excel 公式来返回数组。但是,当我这样做时,它只将第一个值返回到单元格。无论如何,是否可以返回与数组大小相同的范围内的数组?

Function LoadNumbers(Low As Long, High As Long) As Long()
'''''''''''''''''''''''''''''''''''''''
' Returns an array of Longs, containing
' the numbers from Low to High. The
' number of elements in the returned
' array will vary depending on the
' values of Low and High.
''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''
' Declare ResultArray as a dynamic array
' to be resized based on the values of
' Low and High.
'''''''''''''''''''''''''''''''''''''''''
Dim ResultArray() As Long
Dim Ndx As Long
Dim Val As Long
'''''''''''''''''''''''''''''''''''''''''
' Ensure Low <= High
'''''''''''''''''''''''''''''''''''''''''
If Low > High Then
    Exit Function
End If
'''''''''''''''''''''''''''''''''''''''''
' Resize the array
'''''''''''''''''''''''''''''''''''''''''
ReDim ResultArray(1 To (High - Low + 1))
''''''''''''''''''''''''''''''''''''''''
' Fill the array with values.
''''''''''''''''''''''''''''''''''''''''
Val = Low
For Ndx = LBound(ResultArray) To UBound(ResultArray)
    ResultArray(Ndx) = Val
    Val = Val + 1
Next Ndx
''''''''''''''''''''''''''''''''''''''''
' Return the array.
''''''''''''''''''''''''''''''''''''''''
LoadNumbers = ResultArray()

End Function

UDF 当然可以返回一个数组,并且您的函数可以正常工作。只需选择范围 B2:D2,然后输入=LoadNumbers(1, 3)进入编辑栏,然后按 Ctrl+Shift+Enter 告诉 Excel 这是一个数组函数。

现在,您无法让 UDF 自动调整范围大小它是从根据其输入(至少不是没有一些丑陋的Application.OnTimehack),但无论如何你都不需要这样做。只需将函数放在 1000 个单元格宽度的范围内,然后让 UDF 用空白单元格填充未使用的空间,如下所示:

Function LoadNumbers(ByVal Low As Long, ByVal High As Long) As Variant()
    Dim ResultArray() As Variant
    Dim Ndx As Long
    Dim Val As Long
    Dim SourceCols As Long

    SourceCols = Application.Caller.Columns.Count

    If Low > High Then
        Exit Function
    End If
    If High - Low + 1 > SourceCols Then High = Low + SourceCols - 1

    ReDim ResultArray(1 To SourceCols)

    Val = Low
    For Ndx = LBound(ResultArray) To (High - Low + 1)
        ResultArray(Ndx) = Val
        Val = Val + 1
    Next Ndx
    For Ndx = (High - Low + 2) To UBound(ResultArray)
        ResultArray(Ndx) = vbNullString
    Next Ndx
    LoadNumbers = ResultArray()
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电子表格函数中返回数组 的相关文章

随机推荐

  • MVC 3 中如何处理会话超时

    我遇到了频繁的会话超时问题 我想编写一个可以在每个控制器上使用的通用过滤器 过滤器应该重定向用户登录 并在登录后返回到用户发送最后一个请求的位置 你可以尝试这样的事情 public class SessionExpireAttribute
  • 错误 (407)“需要代理身份验证。”

    我有一个要求 比如 我想从 winforms 访问一个 url 登录页面 即 Web 我必须将凭据传递给该网址 并且响应应该是经过身份验证的网页 标记 的内容 我已经编写了一个函数 它将请求 url 并返回响应 但我收到错误代码 407 需
  • git Reset 文件和 git checkout 文件有什么区别?

    为什么 git 允许我重置文件 我以为我明白了reset 从某种意义上说 它正在移动头部 显然我错了 So git reset sha file似乎做同样的事情git checkout sha file 除了我看到的file在索引和工作目录
  • Kestrel 错误:地址已在使用中(dotnet 核心)

    摘要 它的工作原理是dotnet run 但它不起作用dotnet myappname dll 我的 Linux 技能有限 但我正在尝试按照书本进行操作 这样我就不会混淆事情 以下本教程 http www hanselman com blo
  • 在 iOS 14 中,Interface Builder 中设置的 UITextField backgroundColor 在运行时为零

    我有一个应用程序可以在 iOS 11 13 上正常运行 但是当我在 iOS 14 中运行它时 有几个其中的文本字段用零渲染 因此透明 背景颜色即使背景颜色在 Interface Builder 中明确设置为白色 我在代码中看不到任何使用可能
  • 如何在 PySide2 应用程序中嵌入 matplotlib 画布

    我正在尝试将 matplotlib 画布嵌入到 PySide2 应用程序中 我尝试使用这个例子 https matplotlib org examples user interfaces embedding in qt5 html http
  • 使用 bash 计算文件中每个单词的出现次数

    我想计算文件中每个单词的出现次数 但结果是错误的 bin bash usage count sh file declare a dict for word in cat 1 do if dict word then dict word 0
  • 在 Google 表格中两个数字之间的列中填写数字

    所以我试图填写 Google 表格中两个单元格之间的数字 我从 270 开始 在列中出现几个不确定且变化的空单元格后 我需要达到 180 我需要均匀地填充它们之间的单元格 但如何呢 如果您想将这些值粘贴到同一列中 您需要执行以下操作 那么公
  • Prolog - 递归列表构建

    对于我正在编写的程序 我需要创建一个列表列表 其中包含代表乘积的数字对和两个给定数字的总和 现在我有一个函数 我可以指定将列表添加到列表中的次数 稍后将使用完整功能进行扩展 这是我所拥有的 s1 0 X s1 Q X N is Q 1 mu
  • NFC 广播接收器问题

    我希望我的应用程序仅在激活时侦听 nfc 标签 为此 我尝试如下注册一个 nfc 侦听器 但没有成功 IntentFilter filter new IntentFilter android nfc action TECH DISCOVER
  • 使用查询生成器或 Eloquent 进行带有附加条件的 JOIN

    我正在尝试使用 Laravel 查询生成器的 JOIN 查询添加条件
  • Android 上的 Libgdx app.exit() 未关闭应用程序

    在我用 libGDX 开发的 Android 应用程序中 我使用Gdx app exit 当用户尝试退出游戏时 这会关闭游戏 但是当用户重新启动应用程序时 所有Textures被扰乱 超出了使用该应用程序的范围 我注意到 如果我从任务管理器
  • Haskell 中的垃圾 thunk 是否存在固有的“携带成本”?

    在运行 GHC 编译的程序时 我经常看到 GC 上花费了大量的周期 这些数字往往比我的 JVM 经验所建议的要高出一个数量级 特别是 GC 复制 的字节数似乎比我正在计算的数据量大得多 非语言和严格语言之间的这种差异是根本性的吗 tl dr
  • Cassandra 和 Tombstones:创建行、删除行、重新创建行 = 性能?

    有人可以解释一下 以下过程对墓碑有什么影响 1 使用键 1 创建 行 字段 用户 密码 日期 2 删除键为 1 的 行 3 使用键 1 创建 行 字段 用户 密码 登录计数 该序列在一个线程中按顺序执行 因此这种情况以相对较高的 速度 发生
  • 从 Ruby 类中调用方法? (或者这是 Rails 的魔法)

    我是 Ruby 新手 正在学习一些教程 截屏视频 我已经到达他们正在讨论的部分before filter回调 它使用了一些对我来说有点奇怪的语法 我不知道这是否是 ruby 的一个功能 或者它是否是一些 Rails 的魔法 希望这里有人可以
  • Google 电子表格脚本:调试图标已禁用

    这是我第一次尝试创建谷歌电子表格脚本 我正在关注这个教程 https developers google com apps script articles docslist tutorial section2 https developer
  • 委托类型和事件处理程序类型有什么区别?

    三个相关的惯用语 事件 委托 事件处理程序 我总是对谁 添加 到谁感到困惑 event handler event delegate handler delegate 据我所知 delegate 指向具有已知签名的函数的指针 事件处理程序
  • System.ObjectModel 警告 Xamarin 无法在 Android 上运行

    我们正在 Windows 8 1 环境中使用最新的 Xamarin 在 Visual Studio Enterprise 上运行 欢迎使用 Xamarin 示例 我们正在设法在 Windows 和 Apple 上构建和运行 但我们在 And
  • 无法编译 HTTP-Live-Video-Stream-Segmenter-and-Distributor

    我正在 Ubuntu 11 10 上运行 打算编译HTTP直播视频流段和分配器 https github com carsonmcdonald HTTP Live Video Stream Segmenter and Distributor
  • 电子表格函数中返回数组

    下面的代码返回一个数组 我想在电子表格中使用它作为 Excel 公式来返回数组 但是 当我这样做时 它只将第一个值返回到单元格 无论如何 是否可以返回与数组大小相同的范围内的数组 Function LoadNumbers Low As Lo