打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
学以致用——Excel VBA查找列名(列标题所在列的字母序号)

需求描述:

当工作表中的列数比较多,而且列数、列的位置经常变动时,如果在VBA代码中使用的静态指定的列名,将不得不经常改动VBA代码,非常不方便。

解决方法:

使用自定义列号、列名查找函数。

代码如下:

1. 列号查找函数

  1. '查找列号函数
  2. Private Function intFindColumnID(ByVal rowID, ByVal objworkBook, ByVal objWorkSheet, ByVal strColumnName) As Integer
  3. objworkBook.Activate
  4. objWorkSheet.Select
  5. objWorkSheet.Cells(1, 1).Select
  6. Cells.Find(What:=strColumnName, After:=ActiveCell, LookIn:=xlFormulas, _
  7. LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  8. MatchCase:=False, SearchFormat:=False).Select
  9. If Selection.Row = rowID Then
  10. intFindColumnID = Selection.Column
  11. Else
  12. intFindColumnID = 0
  13. End If
  14. End Function

2. 调用查找列号函数

  1. '调用查找列号函数
  2. Sub findColumnID()
  3. Dim objworkBook As Workbook '声明工作簿变量
  4. Dim objWorkSheet As Worksheet '声明工作表变量
  5. Dim columnNumber As Integer '声明列号(列标)变量 (1-10384)
  6. Dim columnName As String '声明列名变量 (A-XFD)
  7. Dim targetColumnTitleName As String '声明要查找的列的列标题
  8. Set objworkBook = ThisWorkbook '指定工作簿
  9. Set objWorkSheet = objworkBook.Sheets("test") '指定工作表
  10. targetColumnTitleName = "Detailed Description" '指定要查找的列标题
  11. 'objWorkSheet.Range("I1").Value = intFindColumnID(1, objworkBook, objWorkSheet, targetColumnTitleName)
  12. 'objWorkSheet.Range("J1").Formula = "=Substitute(Address(1,I1, 4), ""1"", """")"
  13. columnNumber = intFindColumnID(1, objworkBook, objWorkSheet, targetColumnTitleName) '调用列号查找函数
  14. 'objWorkSheet.Range("J1").Formula = "=Substitute(Address(1," & columnNumber & ", 4), ""1"", """")" '4表示单元格引用方式4:relative row & relative column reference.
  15. columnName = Application.Evaluate("=Substitute(Address(1," & columnNumber & ", 4), ""1"", """")") '使用Substitute函数将类似"D1"这样得单元格地址中的1替换为空白字符(即,删除数字1,仅留下列名(字母A至XFD),对应1至10384)
  16. MsgBox (columnName)
  17. End Sub

运行结果示例:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何对工作簿中的工作表排序?
Listview导出EXCEL功能模块
vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中
ACCESS中通过VBA将EXCEL文档中的多个结构相同的表合并为一个表
定时关闭MsgBox-未公开的API
Excel VBA(宏)精简(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服