精华内容
下载资源
问答
  • Excel VBA判断最后一行/列

    千次阅读 2017-11-14 15:20:00
    判断到哪里结束应该是Excel VBA最常见的操作之,下面代码能实现这个功能: FunctionLastColumn()AsLong DimixAsLong ix=ActiveSheet.UsedRange.Column-1+ActiveSheet.UsedRange.Columns.Co...

    判断到哪里结束应该是Excel VBA最常见的操作之一,下面代码能实现这个功能:

     

     
      
    1. Function LastColumn() As Long     
    2.     Dim ix As Long 
    3.     ix = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count 
    4.     LastColumn = ix   
    5. End Function 
    6.  
    7.  
    8. Function LastRow() As Long 
    9.     Dim ix As Long 
    10.     ix = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 
    11.     LastRow = ix 
    12. End Function 









    本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/825128,如需转载请自行联系原作者
    展开全文
  • 使用Excel VBA查找最后一行

    千次阅读 2020-08-05 10:21:51
    使用Excel VBA查找最后一行 (Find Last Row With Excel VBA) Recently, I complained about having trouble getting Excel VBA to correctly find the last row with data in a column, when using Excel tables....
    image

    Recently, I complained about having trouble getting Excel VBA to correctly find the last row with data in a column, when using Excel tables. Thanks for the suggestions on solving that problem!

    最近,我抱怨使用Excel表时,无法使Excel VBA正确地找到列中包含数据的最后一行 。 感谢您提供解决该问题的建议!

    Jim Cone was intrigued by the find last row challenge, and from previous Excel adventures, Jim knew that Excel tables aren't the only obstacle to finding the last row.

    Jim Cone对查找最后一行的挑战很感兴趣,而且从以前的Excel冒险中,Jim知道Excel表不是查找最后一行的唯一障碍。

    Jim decided to write a universal LastRow function for a...

    Jim决定为...编写通用的LastRow函数。

    1. Worksheet

      工作表
    2. Range (selection)

      范围(选择)
    3. Specific column – in a worksheet or range.

      特定列–工作表或范围中。
    4. List/Table

      清单/表格
    5. Filtered data

      过滤数据

    For example, the LastRow function shows that row 40 has the last value in column E, even though that row is hidden by a filter.

    例如,LastRow函数显示第40行在E列中具有最后一个值,即使该行被过滤器隐藏了也是如此。

    FindLastRow01

    如何找到最后一行 (How to Find the Last Row)

    Covered with dust, and bits of Excel VBA code, Jim has finally emerged from his basement workshop. He sent me his Find Last Row sample workbook, which you can download at the link below.

    吉姆布满了灰尘,并沾上了一些Excel VBA代码,终于从地下室车间出来了。 他给我寄了他的Find Last Row示例工作簿,您可以从下面的链接下载该工作簿。

    Here's what Jim had to say about writing the code:

    这是Jim在编写代码时不得不说的:

      • The find function is faster, works on List/Tables but fails on a filtered range and occasionally throws up an unexpected error.

        查找功能更快,可以在列表/表上使用,但是在过滤范围内失败,并且偶尔会引发意外错误。
      • The iteration method seems to be generally reliable but fails on both Lists/Tables and filtered ranges.

        迭代方法似乎通常是可靠的,但在列表/表和过滤范围上均失败。
      • Note that it is actually two functions (both are required).

        请注意,它实际上是两个功能(两者都是必需的)。
      • Use of the second function avoids a compile error in Excel versions prior to the 2003 version.

        使用第二个函数可以避免在2003版之前的Excel版本中出现编译错误。
      • The approach is to search using find and switch to iteration if an error occurs.

        方法是使用查找进行搜索,如果发生错误,则切换到迭代。

    Thanks Jim!

    谢谢吉姆!

    下载样本工作簿 (Download the Sample Workbook)

    To see Jim Cone's Excel VBA code, you can download the Find Last Row in a Column sample workbook. The file is in Excel 2003 format, and zipped. Enable macros when opening the file, if you want to test the code.

    要查看Jim Cone的Excel VBA代码,您可以下载Column示例工作簿中Find Last Row 。 该文件为Excel 2003格式,并已压缩。 如果要测试代码,请在打开文件时启用宏。

    Jim has added a few Excel tables to the worksheet, which you'll see in Excel 2007 and Excel 2010. In Excel 2003, those will appear as lists.

    Jim在工作表中添加了一些Excel表格,您将在Excel 2007和Excel 2010中看到这些表格。在Excel 2003中,这些表格将显示为列表。

    Click the button on the worksheet, to find the last row with data in the current selection. Or, you can modify the "DoesItWork" sub, so it will find the last row on a worksheet or specific column. ________________

    单击工作表上的按钮,以找到当前所选内容中的最后一行数据。 或者,您可以修改“ DoesItWork”子项,以便它将在工作表或特定列上找到最后一行。 ________________

    翻译自: https://contexturesblog.com/archives/2011/07/18/find-last-row-with-excel-vba/

    展开全文
  • Excel VBA获取最后一行

    万次阅读 2015-11-04 21:17:31
    VBA代码: Function getLastRow()  Debug.Print "End(xlUp):" & Sheets(1).[A65536].End(xlUp).Row  Debug.Print "usedRange:" & ActiveSheet.UsedRange.Rows.Count  Debug.Print "find
     
    

    测试excel文件:

     

     

    VBA代码:

    Function getLastRow()

        Debug.Print "End(xlUp):" & Sheets(1).[A65536].End(xlUp).Row

        Debug.Print "usedRange:" & ActiveSheet.UsedRange.Rows.Count

        Debug.Print "find * :" & ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

        Debug.Print "xlCellTypeLastCell: " & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

    End Function

     

     

     

    运行结果:

    End(xlUp):9

    usedRange:16

    find * :10

    xlCellTypeLastCell: 16

     

    结论(几种方式的比较):

    方法1ActiveSheet.Range("A65535").End(xlUp).Row

    1. 只能取得对应列的最后一行(本例是A列)。

    2. 高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576

    可以先判断再决定用哪个数字,即用下列语句代替原来的一句,假定文件名变量为rptfile

            If Right(rptfile, 3) = "xls" Then

                maxrow = [A65536].End(xlUp).Row

            Else

                maxrow = [A1048576].End(xlUp).Row

            End If

     

    方法2ActiveSheet.UsedRange.Rows.Count

    1. 即使行仅仅设置了格式,没有内容,也被算成最后一行。

    2. 在工作表进行对删除或清除操作时也会变得比实际情况大。

     

    方法3ActiveSheet.Cells.Find

    1. 只计算有内容的行,没有格式的行不计算。

     

    方法4ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

       效果同方法2

      

     

    获取最后一行/列代码示例:

    Function getLastRow()

        Debug.Print "End(xlUp):" & Sheets(1).[A65536].End(xlUp).Row

        Debug.Print "usedRange:" & ActiveSheet.UsedRange.Rows.Count

        Debug.Print "find * :" & ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

        Debug.Print "xlCellTypeLastCell: " & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

    End Function

     

    Function getLastCol()

        Debug.Print "End(xlToLeft):" & ActiveSheet.Range("IV1").End(xlToLeft).Column

        Debug.Print "usedRange:" & ActiveSheet.UsedRange.Columns.Count

        Debug.Print "find * :" & ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

        Debug.Print "xlCellTypeLastCell: " & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column

    End Function

    展开全文
  • 获取某个sheet表最后一行的行号,对于使用vba进行循环查找是必经的过程: 通过我最近的学习发现2中方法进行使用,现在分享如下: 如下表格示例: 方法一: Public Sub test() Dim lastRow As Long lastRow =...

    获取某个sheet表最后一行的行号,对于使用vba进行循环查找是必经的过程:

    通过我最近的学习发现2中方法进行使用,现在分享如下:

    如下表格示例:

    方法一:

    Public Sub test()
            Dim lastRow As Long
            lastRow = Worksheets(1).Columns(1).Find("*", searchdirection:=xlPrevious).Row
            MsgBox lastRow
    End Sub

    此时lastRow为16

     

    方法二:

    Public Sub test1()
            Dim lastRow As Long
            lastRow = Worksheets(1).UsedRange.Rows.Count
            MsgBox lastRow
    End Sub

    此时lastRow为16

     

    说明下方法一和方法二的区别:

    方法一查询到最后行的非空单元格的行数

    例如查第二列:

    Worksheets(1).Columns(2).Find("*", searchdirection:=xlPrevious).Row的结果是15

    而方法二是已经用的行数,即使第16行只用了一个单元格,使用的行数也是16

    展开全文
  • Find方法按查找和按列查找的区别 实现代码2 获取工作表总行数 实现代码3 单元格对象的End属性 End属性的局限性 其他获取最后数据行行号的方法 1.定位(SpeciaICells) 2.UsedRange 实现代码4 3. ...
  • '判断最后一行的行号是否大于 0 If LastRow > 0 Then For i = 1 To LastRow '判断这个单元格是否为空 If Cells ( i , arrCol ( k ) ) < > "" Then '判断这个单元格的字体是否...
  • [VBA]探讨在工作表中找到最后一行

    万次阅读 2012-02-02 14:35:42
    在ExcelVBA中,使用End(xlUp)查找最后一行是最常使用且最为简单的方法,它假设要有一列总包含有数据(数字、文本和公式等),并且在该列中最后输入数据的单元格的下一行不会包含数据,因此不必担心会覆盖掉已有数据。...
  • 获取指定行列最后一个非空单元格 1、到达对象所在区域的边缘 在“A1:H16”的数据中,如何一步到达单元格所在的最下、上、左、右端,有以下几种方式: 【Crtl】+↑:到达该列数据的最上端单元格,其余箭头功能类似...
  • 大家好,我们今日继续讲解VBA代码解决方案的第95讲内容:如果文本框的录入校验不能通过,光标仍返回文本框中的另方案。在上讲中我讲了利用EXIT事件中的Cancel 参数的设置来达到我们的目的(值是True)。这种方法中...
  • 程序功能: 判断excel文件中某个工作簿中第一列的最后一行数据的行数(假设第一行有数据,以后每行数据为连续的,无空值。)
  • 本文主要记录,使用 VBScript,如何找到 Excel 页面中的,最后一行。 参考 VBA 中的解决方式: 很多 VBA 与 VBScript 的解决方法都是通用的,尤其是针对 Excel 的时候, 所以,我们先来看下 VBA 中,常用的3中方法...
  • 统计数据区域最后一行行号,可以说是入门VBA时最基础的一行代码,可以让你获取某列或者某一区域的最后一行的行号,本文给出7中不同的方法,得出数据区域最后一行行号,当然每种方法之间有些许差别。 工具/原料 ...
  • 从65536往上数 ...第一列往上数,最后一个单元格行号 cells(rows.count,1).end(xlup).row 需要注意03版excel文件处理行号边界为65536 新版的为1048576。在使用过程中请注意文件边界问题。 ...
  • long ll_IndexStart,ll_IndexEnd,ll_Len String ls_StartRow,ls_EndRow //第个$的位置 ll_IndexStart = Pos( ls_AddRess,"$") //第二个$的位置 ll_IndexStart = Pos( ls_AddRess,"$" , ll_IndexStart + 1 ) //":...
  • 大家好,我们今日继续讲解VBA代码解决方案的第97讲内容:控件跟随鼠标,在利用VBA写代码的时候,往往很多发现是不经意间的。对于这类发现要善于总结,善于利用才能逐渐的提高自己的能力。例如在前几篇文章中讲到的...
  • 大家好,我们今日继续讲解VBA代码解决方案的第119讲内容:如何遍历工作表中的图形。其实这节的内容在我前面的章节中已经讲过,今日但拿出来,作为一节的专门的内容。 工作表中的多个图形,有时我们需要根据实际的...
  • VBA个下拉复选框,以及循环判断,附代码 图1: 图2 图2中的复选下拉框框显示图1中的配置。 VBA代码 Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i&, s$ With...
  • VBA excel 判定相同的

    2019-01-28 14:55:53
    工作需要需要统计excel中相同的...最后通过VBA 方法解决:方法如下,欢迎大家指正。 Sub samerow() Dim colNum As Integer '表格列数 Dim rowNum As Long '表格行数 Dim i As Integer Dim j As Integer Dim ...
  • 这张sheet最后一行有边框的应该是51行,但返回值是错的。 ![图片说明](https://img-ask.csdn.net/upload/201904/14/1555251282_731458.png) 但是在另外一张测试表格里,返回值是正确的。 ![图片说明]...
  • 因为在Excel中VBA是默认隐藏且禁止运行宏的,所以首先介绍如何在Excel中启用VBA,然后介绍基础的变量、常量与循环、判断语句
  • VBA代码打开xls文件时,判断被打开的xls文件是否含VBA代码并禁止其运行说明需求背景禁止被打开文件中的vba运行判断打开的文件中是否含vba代码先取得打开的文件中有多少个components利用取得的对象数量, 取得每个...
  • Function getlastcell(mysheet As String, Optional startrow As Integer) As Integer Sheets(mysheet).Select rowcountinu = False If startrow = 0 Then startrow = 2 End If For i = startrow To st...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧3 获得指定、列中的最后一个非空单元格 12 技巧4 定位单元格 12 技巧5 查找单元格 12 5-1 使用Find方法 12 5-2 使用Like运算符 12 技巧6 替换单元格内字符串 12 技巧7 复制单元格区域 12 技巧8 仅复制数值到另...
  • 最近的项目中,用到了很多Excel的VBA宏功能,用户的新需求也有很多需要用VBA宏来实现。为满足业务需求, 自己搜索网上的相关资料,尝试不同的解决方法,最终解决了用户的需求,在此记录下来,做个总结,也希望能...
  • Excel VBA 笔记 使用IF进行逻辑判断

    千次阅读 2019-04-19 15:56:27
    使用IF进行逻辑判断 Range单元格对象 IF函数过程控制 使用IF退出For循环 小提示: 新建模块:右键Sheet、插入模块 运行:上面的三角形 注释:' 单引号 使用Range 控制单元格 直接写单元格:Range("a1") = ...
  • 数据类型判断、转化,对话框(弹框输入、提示,返回文件路径、文件夹),空的一些情况,正则表达式语法,其他常用语句。
  • vbaword换

    2021-05-18 12:10:08
    VBA问题,如何判断word文本的最后一个字符Sub CheckSelction()With SelectionIf .Type = wdSelectionIP ThenIf .Start = 0 ThenMsgBox "光标位于文档首"ElseIf .Start = ActiveDocument.Content.End - 1 ThenMsgBox ...
  • 源数据及要求:删除黄忠和庞统的各一行重复数据,两个孙权因为班级不同,保留 数据结果展示: 代码解析: Sub DeleteSameRow1() '删除所有重复行,保留唯一值 Dim LastRow As Long Dim i, k, n As Long ...
  • excel 判断合并单元格

    2011-09-18 15:47:58
    excel基本操作,创建,读写,公式设置,判断是否为合并单元格

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,168
精华内容 867
关键字:

vba判断最后一行