请教一下VBA
excel吧
全部回复
仅看楼主
level 1
nnlllxxx 楼主
有好一段时间不写vba了,也丢得差不多了,现在有一个程序不会,特来请教大家,是这样的: 设 第一行从B列到E列为 村名1、村名2、村名3、村名4A 列村名1姓名1姓名2姓名3村名3李四赵六王五赵某村名2李四赵六王五赵某村名4李四赵六王五赵某 目的:是想把A列的每个村数据自动复制到与第一行相对应的村名下 Private Sub CommandButton1_Click()Dim i As IntegerDim m As IntegerDim h As IntegerDim f As IntegerDim ran As RangeDim ran1 As Range’第一步For Each ran In Range("b1:e1") '村名For Each ran1 In Range("a2:a20") '村名及人名If ran1.Value = ran.Value ThenRange("g65536").End(xlUp).Offset(1, 0).SelectActiveCell.Value = ran1.Row '取得队名的所在行,这句运行后有点小问题,就是数据有点乱,结果是“2,11,6,16”,郁闷!End IfNextNext’第二步For i = 2 To 5 Step 1 '指G列m = i + 1h = Val(Range("g" & i).Value) '转换数据类型f = Val(Range("g" & m).Value)Range(Cells(h, 1), Cells(f, 1)).Select '选择每个村名下的数据,这句也有点问题'下面的,我想将相对应的数据,放置到第一行的村名下,这个要怎样写了呢NextEnd Sub
2008年12月27日 15点12分 1
level 13
没按你的思路编下去,换了一个思路,你看行不行:For i = 2 To 5 '第一行B1至E1的村名CMWZ = WorksheetF*nction.Match(Cells(1, i), Range("A:A"), 0) '判断村名在A列位置For J = 2 To Range("A65536").End(xlUp).RowAA = WorksheetF*nction.CountIf(Range("1:1"), Range("A" & CMWZ + J - 1))XM = Range("A" & CMWZ + J - 1)If AA Or XM = "" Then Exit For '在写对应村名的姓名时如果在A列出现下一个村名或出现空值则退出J循环Cells(J, i) = XMNextNext另外给一个函数解法:B2:=IF(ROW(A1)>SUM(SMALL(MATCH($B$1:$F$1&"",$A$2:$A$100&"",),COLUMN(A:B))*{-1,1})-1,"",INDIRECT("A"&SMALL(MATCH($B$1:$F$1&"",$A$2:$A$100&"",),COLUMN(A1))+1+ROW(A1)))数组公式。
2008年12月31日 08点12分 2
level 0
将代码中的“F*”换成“FU”,没办法,百度不让发这个单词。--轻舟上逆--
2008年12月31日 08点12分 3
level 1
nnlllxxx 楼主
 真不好意思,现在才看到吧主的回复,唔,因为我那时看了几天,见没人回复,以为。。。,没想到还有一个大惊喜。。。,用吧主的方法已能实现了这项功能。还有那个数组公式!我一看便晕了,真的是高手,能写那么长的公式,我至多写得一半长,日后还要向吧主多多学习才是。
2009年01月09日 08点01分 4
1