VBA 根据输入值查找下一列

2023-12-23

在我现在尝试编写的程序中,我采用两列数字并对它们进行计算。在用户告诉我之前,我不知道这两列位于哪里(他们在我的代码所在的工作簿的单元格中输入列值)。

例如,如果用户输入“A”和“B”作为所有信息所在的列,我可以根据这些值执行计算。同样,如果他们想分析另一个工作表(或工作簿)并且列位于“F”和“G”中,他们可以输入这些列。问题是我要求用户输入这两列以及其他四列(最后四列是结果列)。我这样做是希望能够使其变得灵活,但现在不灵活是可以接受的。

我的问题是,如果给我一些信息所在的值(假设为“F”),我如何找出该列在该输入值之后或之前的位置。因此,如果只给我“F”,我将能够创建一个变量来保存“G”列。

以下是我需要解决这个新问题之前变量如何工作的示例:

Dim first_Column As String
Dim second_Column As String
Dim third_Column As String

first_Column = Range("B2").Text
second_Column = Range("B3").Text
third_Column = Range("B4").Text

此处,单元格 B2 - B4 是用户输入值的位置。一般来说,我希望能够不再拥有 B3 和 B4。我觉得 Offset(0,1) 可能能够以某种方式提供帮助,但到目前为止我无法正确实现它。

谢谢你,

杰西·斯莫瑟蒙


这里有两个函数可以帮助您处理列>“Z”。它们将列的文本形式转换为列索引(作为 Long 值),反之亦然:

Function ColTextToInt(ByVal col As String) As Long
    Dim c1 As String, c2 As String
    col = UCase(col) 'Make sure we are dealing with "A", not with "a"
    If Len(col) = 1 Then  'if "A" to "Z" is given, there is just one letter to decode
        ColTextToInt = Asc(col) - Asc("A") + 1
    ElseIf Len(col) = 2 Then
        c1 = Left(col, 1)  ' two letter columns: split to left and right letter
        c2 = Right(col, 1)
        ' calculate the column indexes from both letters  
        ColTextToInt = (Asc(c1) - Asc("A") + 1) * 26 + (Asc(c2) - Asc("A") + 1)
    Else
        ColTextToInt = 0
    End If
End Function

Function ColIntToText(ByVal col As Long) As String
    Dim i1 As Long, i2 As Long
    i1 = (col - 1) \ 26   ' col - 1 =i1*26+i2 : this calculates i1 and i2 from col 
    i2 = (col - 1) Mod 26
    ColIntToText = Chr(Asc("A") + i2)  ' if i1 is 0, this is the column from "A" to "Z"
    If i1 > 0 Then 'in this case, i1 represents the first letter of the two-letter columns
        ColIntToText = Chr(Asc("A") + i1 - 1) & ColIntToText ' add the first letter to the result
    End If
End Function

现在您的问题可以轻松解决,例如

newColumn = ColIntToText(ColTextToInt(oldColumn)+1)

根据 mwolfe02 的评论进行编辑:

当然,如果您对列名称不感兴趣,而只想获取用户给定列正下方的给定行中特定单元格的范围对象,则此代码是“大材小用”。在这种情况下,一个简单的

 Dim r as Range
 Dim row as long, oldColumn as String
 ' ... init row and oldColumn here ...

 Set r = mysheet.Range(oldColumn & row).Offset(0,1)
 ' now use r to manipulate the cell right to the original cell

会做的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA 根据输入值查找下一列 的相关文章

  • 将单独的范围放入二维数组中

    我正在尝试获取大小的二维数组 x 3 填充 X只是工作表的大小 行数 并且有 3 列我感兴趣 例如 这些列彼此不靠近arr i 0 应从 AA 栏开始填写 arr i 1 应来自 K 列 并且arr i 2 需要来自 L 列 我尝试按以下方
  • 用户完成后关闭 Excel

    任务非常简单 我想从 VB net GUI 打开 Excel 文档 xls 用户将处理 Excel 文件 用户完成后关闭 Excel 文件 我想要VB net代码释放Excel对象 问题是 当用户关闭文件时 Excel 对象仍然可以在任务管
  • Excel VBA 将范围值复制到数组,

    我有以下代码摘录 我试图将一系列值复制到声明的数组上 但它一直给我 无法分配给数组 错误 Dim permittedCurve 0 To 7000 As Variant permittedCurve activeWorkbook Works
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl
  • 如何循环浏览文件夹内所有工作簿中的所有工作表

    我使用宏对计算机上给定文件夹中每个工作簿的每张工作表进行更改 事件顺序 打开用户选择的文件夹中的每个 Excel 文件 在工作簿中的每个工作表上执行任务 保存文件 关闭工作簿 宏不起作用 问题似乎是由Selection AutoFilter
  • 是否有 R 函数可以将这些数据从长形重塑为宽形?

    数据现在看起来如何 Coach ID Student score 1 A 8 1 B 3 2 A 5 2 B 4 2 C 7 看起来像这样 Coach ID Student score student 2 score 2 student 3
  • 请参阅使用代号的表

    我在此代码中收到 类型不匹配 错误 With Worksheets Sheet1 Error here my code here End With 我的床单CodeName is sheet1 有人可以帮我消除错误吗 1 按索引参阅表 Wi
  • 将字符串中的一个字符替换为另一个字符

    我有如下数据 A B C D 我想更换C与数据 例如 Z 这样它可能看起来像 A B Z D 我该怎么做 SUBSTITUTE A1 C Z 虽然我不清楚你是否想要G or Z 你提到G但你的示例输出显示Z
  • Pandas - 分割大的Excel文件

    我有一个大约有 500 000 行的 Excel 文件 我想将其拆分为多个 Excel 文件 每个文件有 50 000 行 我想用熊猫来做 这样它会是最快和最简单的 有什么想法如何制作吗 感谢您的帮助 假设您的 Excel 文件只有一个 第
  • 副水平X轴VBA最大刻度

    通过以下代码和敏 正在设置 VBA 中图表的主水平 X 轴的比例 Sub chart set Dim objCht As ChartObject With ActiveSheet ChartObjects 1 Chart Axes xlVa
  • 运行时错误“3065”无法执行选择查询

    我已经写了很多查询 但我正在努力解决这一问题 当我运行以下 sql 时 出现运行时错误 3065 Dim db As DAO Database Dim sqlstring As String Set db DBEngine 0 Databa
  • Excel 中分组经常性 CF 的净现值

    下面是 60 个期间的现金流量表 有一组经常性现金流量 Excel 中是否有一种简单的方法可以计算所有 60 个期间 每月现金流量 的 NPV 而无需创建 60 行的表格并使用 NPV 公式 因此 60 个订单项的公式如下所示 NPV PE
  • VBA 用户表单:防止组合框在 KEYDOWN 时转义

    社区 有一种方法可以防止活动组合框在列表末尾 或开头 按下向下箭头 或向上箭头 时失去焦点 如果有更好的方法来做到这一点 最好使用 MS 标准属性 请分享 问题 当位于组合框中列表的末尾时 如果您点击向下箭头 它会将您移至活动组合框下方的任
  • Excel VBA 循环遍历 10,000 组行,每组包含 20 行

    如何将当前按行循环的 Excel VBA 代码转换为循环 20 行集 据我了解 Step函数可能与以下行一起使用 Range V1 Value Application Index vInput1 r 0 但是 我不确定如何修改代码以循环遍历
  • 访问应用程序,带有表单任务栏图标的隐藏应用程序窗口

    我有一个带有一个主表单的访问应用程序 当您打开应用程序时 AutoExec 宏会通过 Windows API apiShowWindow 隐藏应用程序 然后 AutoExec 打开设置为 Popup 的主窗体 这一切都很顺利 我的数据库内容
  • VBA 错误处理有哪些好的模式? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 VBA 中有哪些好的错误处理模式 特别是 在这种情况下我应该做什么 some code some code where an error mig
  • 如何获取Excel工作簿第一页的名称?

    假设您不知道 Excel 工作簿中第一个工作表的名称 并且您想找到一种方法来读取first页 该片段有时有效 但并非总是有效 只有我吗 或者有没有一种简单的方法可以做到这一点 MyConnection new System Data Ole
  • 如何修复此“输入超出文件末尾”错误? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须找到包含以下内容的所有步骤PGM FTP然后阅读所有行 直到找到另一个没有的步骤PGM FTP 它可以是任何东西 除了FTP 我需要
  • 哪个正则表达式能够在 C# 公式中选择 Excel 列名称?

    我需要在 C 中实现 Excel 公式自动填充 假设这个公式位于 B100 SUM B 99 B99 我想让这个公式在 C100 时有所不同 SUM B 99 C99 该公式仅是一个示例 一些真实的例子是 SUM B 0 B 0 SUM 1
  • 使用 VBA 将 Excel 中的范围粘贴到 Powerpoint 模板的特定幻灯片中

    我花了好几个小时查看针对我的问题的各种建议解决方案 但找不到任何似乎可以完成工作的东西 或者更可能的是 我对 VBA 的掌握正在了解我理解在线解决方案的能力 因此 我希望你们中的一位好心人能够帮助我解决问题 我打开了一个 Excel 工作表

随机推荐

  • 仅匹配以“www”或“http(s)://”开头的 URL,仅匹配以“www”或“http(s)://”开头的 URL

    我正在使用一个正则表达式我的博客网站的模式 使 URL 地址为可点击的链接 效果很好 该模式具有以下格式 href a zA Z0 9 2 256 a z 2 4 b a zA Z0 9 所以有什么问题 但最近我发现这个模式也匹配文件名因此
  • python中文件的权限更改

    我想更改当前目录树中所有文件的文件权限 我正在尝试打开每个目录并打开文件并使用更改权限os chmod 但是出现错误 import os import stat for files in os walk os chmod files sta
  • 使用 C# 在 List<> 中查找项目

    我有一个包含对象集合的列表 如何在该列表中搜索某个项目object Property myValue 您有几个选择 Using 可枚举 Where https learn microsoft com en us dotnet api sys
  • 我可以使用 SQL Server 2012 Express 来使用 SSDT/BIDS/SSIS 吗?

    理想情况下 我想在我的台式电脑上制作 SSDT SSIS 包 以便我可以测试并将其部署到生产服务器环境 在我的电脑上我有 Windows 7的 视觉工作室2008 Visual Studio 2010 外壳 SQL Server Expre
  • 文件未上传 PHP

    我尝试编写代码以将文件上传到 PHP 中的 media 文件夹 由于某种原因 它仍然不起作用 下面是执行代码 move uploaded file FILES file tmp name media FILES file name or d
  • 如何初始化静态向量成员?

    例如 struct A static vector
  • 如何判断资源是否不受管理?

    我正在使用 Visual Studio 2017 编写 C 应用程序 我努力通过使用 using 语句来处理我实例化的所有对象 如果我实例化的对象不基于可隐式转换为 System IDisposable 的类型 Visual Studio
  • Vim 搜索并突出显示脚本中的控制

    我正在编写一个脚本 我想在其中以编程方式控制搜索 并突出显示它们 search 函数结果没有突出显示 我认为 因此使用该函数对我来说没有用 我想做的是使用 正常 命令来搜索变量 但这似乎并不简单 我可以编写命令 execute normal
  • 在 R 中保存和增量更新最近邻模型

    有几个最近邻 R 包 例如 FNN RANN yaImpute 但它们似乎都不允许保存 NN 数据结构 覆盖树 KD 树等 以便可以计算新查询的最近邻重建整个树 R中有这样的函数吗 我正在寻找一个返回数据结构的函数 当新数据到达时我可以增量
  • mathjax \textsc

    我如何让像 textsc 这样的东西工作 显然有可能启用它这个数学溢出答案 https meta mathoverflow net discussion 1046 why doesnt mathit work 还有其他人找到了至少允许使用小
  • 方向更改时如何更改网格布局

    我正在创建一个win8应用程序 我需要更改网格的布局 以便当用户在方向之间翻转时所有内容都适合屏幕 我明白我需要使用VisualStateManager但我无法理解任何教程 如果我有这个代码
  • PayPal 完整日期格式

    PayPal 以以下格式发回 payment date 字段 19 19 09 Sep 27 2011 我正在使用 php 来计算 payment date 的剩余天数 但我的代码是基于在 2011 09 27 12 19 00 获取格式
  • 如何在 Angular 2 项目中分离管理和前端 Web

    我将使用 Angular 2 构建一个完整的项目 该项目包含管理面板和供用户使用的前端 Web 我不知道如何将管理与网络分开 我应该使用路由吗 但这需要我导入内部的所有组件app module ts或者还有另一种方法可以使用两个app mo
  • 在 Groovy 中使用 JSONBuilder 排除空值

    是否可以使用默认的 JsonBuilder 库在 Groovy 中创建 JSON 值以排除对象的所有空值 例如 Jackson 在 Java 中通过注释类来排除空值所做的事情 一个例子是 userId 25 givenName John f
  • 如何在11g中通过select语句为新创建的表的列设置默认值

    我在 Oracle 11g 中创建一个表 其中一列使用默认值 语法是 create table xyz emp number ename varchar2 100 salary number default 0 这样就创建成功了 由于某些原
  • 为什么重载方法没有被调用?

    我认为被调用的方法是在运行时决定的 或者我错过了什么 示例代码 class Program static void Main string args var magic new MagicClass magic DoStuff new Im
  • 在 Cocoa 中使用 autorelease 的成本是多少?

    大多数苹果文档似乎都避免使用自动释放对象 特别是在创建 gui 视图时 但我想知道使用自动释放对象的成本是多少 UIScrollView timeline UIScrollView alloc initWithFrame CGRectMak
  • exoplayer播放器错误无法连接到hls链接

    我有一个 hls 链接 可以使用 mpv 正常播放 但在 exoplayer 中出现此错误 PlayerError com google android exoplayer2 ExoPlaybackException com google
  • IE 9 和 10 产生意外且不一致的 MediaError

    我们有一组 HTML 块 比如说大约 50 个 它们被迭代地解析并具有Audio动态添加的对象 var SomeAudioWrapper function name this internal player new Audio this i
  • VBA 根据输入值查找下一列

    在我现在尝试编写的程序中 我采用两列数字并对它们进行计算 在用户告诉我之前 我不知道这两列位于哪里 他们在我的代码所在的工作簿的单元格中输入列值 例如 如果用户输入 A 和 B 作为所有信息所在的列 我可以根据这些值执行计算 同样 如果他们