返回数组中元素的索引 Excel VBA

2023-11-30

我有一个数组 prLst,它是整数列表。整数未排序,因为它们在数组中的位置代表电子表格上的特定列。我想知道如何在数组中找到特定整数并返回其索引。

似乎没有任何资源向我展示如何在不将数组转换为工作表上的范围的情况下进行操作。这似乎有点复杂。这对于VBA来说是不可能的吗?


Dim pos, arr, val

arr=Array(1,2,4,5)
val = 4

pos=Application.Match(val, arr, False)

if not iserror(pos) then
   Msgbox val & " is at position " & pos
else
   Msgbox val & " not found!"
end if

更新为显示使用 Match(带有 .Index)在二维数组的某个维度中查找值:

Dim arr(1 To 10, 1 To 2)
Dim x

For x = 1 To 10
    arr(x, 1) = x
    arr(x, 2) = 11 - x
Next x

Debug.Print Application.Match(3, Application.Index(arr, 0, 1), 0)
Debug.Print Application.Match(3, Application.Index(arr, 0, 2), 0)

编辑:这里值得说明 @ARich 在评论中指出的内容 - 使用Index()如果您在循环中执行此操作,则对数组进行切片会产生可怕的性能。

在测试中(下面的代码),Index() 方法几乎比使用嵌套循环慢 2000 倍。

Sub PerfTest()

    Const VAL_TO_FIND As String = "R1800:C8"
    Dim a(1 To 2000, 1 To 10)
    Dim r As Long, c As Long, t

    For r = 1 To 2000
        For c = 1 To 10
            a(r, c) = "R" & r & ":C" & c
        Next c
    Next r

    t = Timer
    Debug.Print FindLoop(a, VAL_TO_FIND), Timer - t
    ' >> 0.00781 sec

     t = Timer
    Debug.Print FindIndex(a, VAL_TO_FIND), Timer - t
    ' >> 14.18 sec

End Sub

Function FindLoop(arr, val) As Boolean
    Dim r As Long, c As Long
    For r = 1 To UBound(arr, 1)
    For c = 1 To UBound(arr, 2)
        If arr(r, c) = val Then
            FindLoop = True
            Exit Function
        End If
    Next c
    Next r
End Function

Function FindIndex(arr, val)
    Dim r As Long
    For r = 1 To UBound(arr, 1)
        If Not IsError(Application.Match(val, Application.Index(arr, r, 0), 0)) Then
            FindIndex = True
            Exit Function
        End If
    Next r
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回数组中元素的索引 Excel VBA 的相关文章

  • 提高我的脚本性能 Google Sheets 脚本

    我创建了一个函数 每当我运行 AppendRow 脚本时 AY 列中没有点 的每一行 包含我想要的每个信息 列的数组从该表将被转移到我的主表 其中有13k rows atm 通常 每天大约有 20 40 行被粘贴到第一个工作表中 此脚本会自
  • 根据列标题将数据从一个工作簿转移到另一个工作簿

    我下面的代码将列值从一个特定工作簿 Activeworkbook 列 O AH 和 I 转置到另一个工作簿 loader file xls 列 A B C 它非常适合我的需求 Sub PullTrackerInfo Pull info fr
  • 从现有数组创建新结果

    如果我有一个如下所示的示例数据 我需要从结果数组中获取 FinalResult 数组 let result type Science link www educatorsector com type Sports News link www
  • 在 bash 中传递多个数组作为参数

    我已经成功地能够调用单个数组作为参数 但在传递多个数组时遇到问题 这是我到目前为止所拥有的 calling function array1 1 2 3 4 array2 a b c d array3 called function arra
  • 如何在 PHP 中随机组合两个数组

    如何将两个数组组合成一个数组 我请求的方式是第三个组合数组应包含一个数组中的一个值和另一个数组中的下一个值 依此类推 或者 它可以是随机的 前任 arr1 1 2 3 4 5 arr2 10 20 30 40 50 和组合数组 arr3 1
  • 读取Excel文件时的Pandas数据框和字符编码

    我正在阅读一个包含多个数值和分类数据的 Excel 文件 name string 列包含外语字符 当我尝试查看 name string 列的内容时 我得到了我想要的结果 但外来字符 在 Excel 电子表格中正确显示 以错误的编码显示 这是
  • 对包含数字和字符串的数组进行排序

    我正在尝试对包含字符串 数字和数字作为字符串 例如 1 2 的数组进行排序 我想对这个数组进行排序 以便排序后的数组首先包含数字 然后包含包含数字的字符串 最后包含字符串 var arr 9 5 2 ab 3 1 to be sorted
  • 如何在批处理中返回数组的元素?

    我的程序中的数组列表中有两个元素 如何将变量分配给等于其中一个元素 这是代码 echo off setlocal enabledelayedexpansion set p string for l a in 0 1 1000 do if n
  • 尝试从 Excel 添加附件到电子邮件,但仅知道文件名的第一部分

    我有一个宏 每天用来将自动生成的文件附加到电子邮件中 文件名需要采用某种格式 其中包括日期和时间 并且由于这是自动的 因此只能固有地知道日期 无需手动检查文件 我在用 Attachments Add and format date etc
  • 在 PHP 中将数组转换为字符串并将其恢复为数组

    我正在使用 Serialize 函数将数组存储在我的 MYSQL 数据库中 然后我在其他页面中取消序列化他 数组结构如下所示 Array 0 gt Array names gt somename1 rating gt 10 1 gt Arr
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 如何在 Scala 中将文件读取为字节数组

    我可以找到大量示例 但它们似乎要么主要依赖于 Java 库 要么只是读取字符 行 等 我只想读入一些文件并获取带有 scala 库的字节数组 有人可以帮助我吗 Java 7 import java nio file Files Paths
  • 将文本文件读入 char 数组。 C++ ifstream

    我试图将整个 file txt 读入字符数组 但遇到一些问题 请提出建议 ifstream infile infile open file txt char getdata 10000 while infile eof infile get
  • 在 PHP 中复制 Excel 循环引用公式

    我正在尝试在 PHP 中复制 Excel 循环引用公式 在 Excel 中我有 A19 A25 A22 result 8771 65 A22 A19 14 1 result 1236 80 A25 10000 但是 当我尝试用 PHP 计算
  • 按第二个值对二维数组进行排序

    好吧 假设我有一个像 z 1 d 3 e 2 这样的数组 如何按每个组成数组的第二个元素对该数组进行排序 这样我的数组就会如下所示 z 1 e 2 d 3 arr z 1 d 3 e 2 arr sort a b a 1 lt gt b 1
  • 在嵌套有序字典 python 中查找给定键的值

    我试图从嵌套的 OrderedDict 中查找给定键的值 关键点 我不知道这个字典会嵌套多深 我正在寻找的键的名称是不变的 它将位于字典中的某个位置 我想返回本例中名为 powerpoint color 的键的值 mydict Ordere
  • PHP - 根据一个值查找具有不同结构的两个多维数组之间的差异

    我正在努力理解哪种数组函数最适合我的特定情况 其他人似乎有很多困惑 我也读过几篇文章 我有两个具有不同结构的数组 但都包含一个我想比较的 ID 字段 数组一是我的素材数组 它看起来像 array 1 0 gt array 5 ID gt s
  • 确定 IE 中的 HTML 按钮是否被禁用

    我最近正在做一些 VBA 工作 我需要签入网页以单击按钮 如果启用 如果禁用则不要单击 但 我不知道如何让 VBA 检查禁用的按钮 这是按钮代码
  • 从一个 numpy 数组中删除另一个 numpy 数组中的元素的有效方法

    从一个 numpy 数组中删除另一个数组中的元素的最佳方法是什么 本质上我是在追求np delete 其中数组的顺序并不重要 import numpy as np a np array 2 1 3 print a b np array 4
  • 消除启动时的安全警告

    打开任何 MS Access 数据库时 都会出现安全警告 指出该文件可能对计算机有害 但是 有没有办法删除此消息 或者它应该仍然是一种必要的罪恶 您也许可以签署您的程序 我不确定 读本文 http www howto outlook com

随机推荐

  • 通过两个代理的 HttpWebRequest

    我最近建立了一个网站 它使用地理 DNS 将 DNS 解析为两个不同的 IP 具体取决于您的位置 然而 这意味着要监控网站 我需要确保该网站在两个地理位置都可用 为此 我在 net 中编写了一个小程序 不断尝试使用 HttpWebReque
  • 连接到特定 HID 配置文件蓝牙设备

    我将蓝牙条形码扫描仪连接到我的 Android 平板电脑 条码扫描仪与 Android 设备绑定作为输入设备 HID 配置文件 它在系统蓝牙管理器中显示为键盘或鼠标 我发现蓝牙配置文件输入设备类存在但被隐藏 class 和 btprofil
  • 使用 LibGDX 登录 Google

    我有问题 我正在用 LibGDX 制作游戏 现在我想实现Google登录 我到处寻找 但什么也没找到 我需要的是一个解析器来抽象特定平台的代码 但我不知道该怎么做 有人可以帮忙吗 EDIT 这是代码 这是我的 Android 解析器 pub
  • 用于在页面内创建 div 样式窗口的 JavaScript 库

    我试图找到一个好的 JavaScript 库 它可以在我网站的页面中创建一个漂亮的 内部窗口 弹出窗口 我不想担心屏幕定位 即不必计算窗口的大小是否会超出屏幕等 而只需制作一个包含内容的新弹出窗口 我将使用 NET 3 5 ASP NET
  • 使用 Plink 在另一台服务器(jumphost)后面的远程服务器上执行命令

    我正在尝试使用 Power Automate Desktop for PuTTY 进行自动化 我遇到了一个使用 cmd 来运行命令的解决方案plink 我使用了以下步骤 我将PuTTY添加到系统变量中 我使用了命令 在cmd中 plink
  • CRM 2013 中的富文本编辑器 (WYSIWYG)

    有时 CRM 界面中的 HTML 编辑器很有用 可以直接在 CRM 2013 中实现编辑器 作为编辑器 我们将使用 ckeditor 它允许在不安装在服务器上的情况下使用它 确定您想要使用富文本编辑器的字段 Create html 网络资源
  • 如何在同一时间 shell 中读取两个文件

    我有两个文件 A john 1 2 3 4 5 6 7 Ely 10 9 9 9 9 9 9 Maria 3 5 7 9 2 1 4 Rox 10 10 10 10 10 10 10 B john 7 5 Ely 4 5 Maria 3 7
  • 对 top_hits 聚合求和

    简而言之 问题是 如果我对每个存储桶的 top hits 进行聚合 如何对结果结构中的特定值求和 Details 我有许多记录 其中包含每个商店的一定数量 我想获得每个商店所有最新记录的总和 为了获取每个商店的最新记录 我创建了以下聚合 l
  • 最新 Xamarin Forms 2.2.0.45 上存在数百个 Resource.Designer.cs 构建错误

    我有一个新的 Xamarin Forms 解决方案设置 其中包含 PCL iOS 应用程序 构建良好 和 Android 项目 Android 项目已更新为 Xamarin Forms 2 2 0 45 的最新 Nuget 包 以匹配 PC
  • git 无法执行“pack-objects”:权限被拒绝

    从我刚刚添加的自托管 git 远程拉取时 我收到此错误 git pull myremote master fatal cannot exec pack objects Permission denied fatal git upload p
  • 错误 C3861:“initNode”:找不到标识符

    我收到以下编译错误 错误 C3861 initNode 找不到标识符 下面是代码 include
  • 我可以在选择列表中使用 Postgres 关键字作为别名吗?

    今天早上我遇到了一个奇怪的问题 我正在创建一个视图来简化 Postgres 表中的应用程序列表 这失败了 CREATE OR REPLACE VIEW application view AS SELECT COALESCE nullif f
  • 创建带有参数的 bash 脚本

    我知道如何在 bash 中提出问题 例如 您想创建一个目录吗 并根据该输入执行某些操作 但我想创建一个 bash 脚本 我可以这样做 somescriptname sh install somescriptname sh update so
  • 如何在 PyCharm 中获得 COM 编程的代码完成?

    使用时app win32com client Dispatch Some Application PyCharm中有没有可行的方法来完成代码 必须重新输入 或复制粘贴 API 文档中的所有内容是相当乏味的 因此创建骷髅是 是否没有其他方法可
  • UITextView setText 在 ios8 中不应跳转到顶部

    以下 iOS 8 代码每秒被调用一次 void appendString NSString newString toTextView UITextView textView textView scrollEnabled NO textVie
  • Outlook 的多合一插件

    我想开发一款适用于 Outlook 的一体化插件 这意味着该加载项将可用于所有 Outlook 客户端 桌面 Web 我读here我可以做到这一点 我已经为 Outlook Web 应用程序创建了加载项 并尝试将其部署到桌面客户端 但不知道
  • 在node.js中使用graphicsmagick提取gif帧

    我正在尝试使用node js 上的graphicsmagick 将gif 转换为png 在他们的文档中 他们有以下代码 pull out the first frame of an animated gif and save as png
  • 如何使 xmlserializer 仅序列化纯 xml?

    我需要获取纯 xml 而不需要在开始时和xmlns xsi http www w3 org 2001 XMLSchema instance xmlns xsd http www w3 org 2001 XMLSchema 在第一个元素中Xm
  • 在同一张图中绘制多个相似数据

    我想生成一个图 X 与 Y Z 值取决于 Y 示例如下图所示 X 的矩阵大小与 Z 相同 但与 Y 不同 我可以将 Z 对 X 绘制出来 但我想将所有图组合成一个图 并将 Y 对 X 进行绘制 我可以将多个图绘制成一个图 但图是互相重叠的
  • 返回数组中元素的索引 Excel VBA

    我有一个数组 prLst 它是整数列表 整数未排序 因为它们在数组中的位置代表电子表格上的特定列 我想知道如何在数组中找到特定整数并返回其索引 似乎没有任何资源向我展示如何在不将数组转换为工作表上的范围的情况下进行操作 这似乎有点复杂 这对