excel使用vba如何根据变化的列值获取行的值?

excel使用vba如何根据变化的列值获取行的值?,第1张

如果是多个,并且不要提示,让它变成行数的变量

Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh *** 作系统的电脑而编写和运行的一款试算表软件,最早版本是在1985年开发的。

Microsoft Excel可以进行各种数据的处理、统计分析和辅助决策 *** 作等,具有打开或关闭表格标题行、计算列使用单个公式调整每一行、数据排序和筛选、自定义公式和文本输入等功能。目前,Microsoft Excel被广泛应用于管理、统计财经、金融等众多领域。

在工作表中我们经常使用查找功能,在一列中查找某个内容,查找下一个,那在VBA中我们该如何进行查找呢?

我们希望通过输入班级,点击筛选就能出来想要的内容,这里我忘了在筛选之前先做个清除,所以筛选二班记录时,三班的记录没有被清除掉。

我们要把某个班级的记录筛选出来,那么就希望首先在对应的列里找到某个班级所在的单元格,这里就用到了Find,找到后就把该行复制到对应位置,然后继续查找下一个。我们就可以使用VBA代码:

Sub 筛选()Dim rng1, rng2, rng3 As Range, addr$, adr$Set rng1 = Range("a:a")Find(Range("e6")Value)addr = rng1AddressDo Set rng1 = Range("a:a")FindNext(rng1) adr = rng1Address Set rng2 = Cells(RowsCount, "e")End(xlUp)(2, 1) Set rng3 = rng1EntireRowRange("a1:c1") rng3Copy rng2Loop Until addr = rng1AddressEnd Sub

A列最底端有数据的单元格

[a65536]end(xlup)row

如果是统计每列有多少非空单元格

就要调用COUNTA函数方便些

WorksheetFunctionCountA

(Range("A:A"))

首先没有这个全局变量的哦

通常可以用这句获取最后一行的行号

最后一行行号=SHEETS("SHEET1")CELLS(65536,1)END(XLUP)ROW

注意:1、最大行数不会大于65536用这个数值的好处是可以兼容2003版,如果确定是2007以后,可以将该数值设置为100万。

2、1表示第一列,前提是第一列必须要有数值,如果第一列为空白,则需要修改该参数。

Option Explicit

Sub 发票号查询()

ApplicationScreenUpdating = False '关闭屏幕刷新

Dim j&, m&, k&, i&

j = Sheets("资料信息")[A65536]End(3)Row '计算资料信息表数据总行数

m = Sheets("同一发票号下商品信息")[A65536]End(3)Row '计算同一发票号下商品信息表数据总行数

Sheets("同一发票号下商品信息")Rows("3:" & m + 1)Delete '删除同一发票号下商品信息表第3到最后一个有数据的行

k = 2 '计数器k初始化为2 假设表头有2行,提取的数据copy的位置从第3行开始

For i = 2 To j 'i从第2行循环到资料信息表的最后一行

If Sheets("资料信息")Cells(i, "x") = Sheets("同一发票号下商品信息")Range("B1") Then '如果资料信息表的第i行第x列的值与同一发票号下商品信息表的B1单元格数据相同

k = k + 1 '计数器k的值+1

Sheets("资料信息")Rows(i)Copy Sheets("同一发票号下商品信息")Range("A" & k) '资料信息表第i行复制到同一发票号下商品信息表的A & k单元格 k为计数器的当前值,例如k=3就是A3单元格

End If

Next

[B1]Select

ApplicationScreenUpdating = True '恢复屏幕刷新

End Sub

Function lines(r)  'r 为某单元格,如A1

rWrapText = False

x = rHeight

rWrapText = True

y = rHeight

lines = y / x

End Function

使用方法 lines(range("A1"))

思路:设置该单元格不自动换行,得到此时的高度x,恢复自动换行,得到此时的高度y,行数=y/x

用下replace(sheet1cells(1,1),chr(10),chr(13))

替换一下看看,前面那个是换行符,后面那个是回车符将换行符替换位回车符应该可以吧

呵呵,可惜的是不知道这里的换行是怎么编码的啊

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/13495451.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存