VBA 将Excel中符合条件的几行数据合并成一行,并将这几行某一列数据汇总放到第一行,删除其他行

比如:有三行数据
年龄 姓名 性别
第一行 1 李四 男
第二行 2 李四 男
第三行 2 张三 男
第四行 3 李四 男
我需要将姓名列为“李四”且性别列为“男”的这三行数据的年龄相加(即为6)合并到第一行,把其他行两行的数据删除。
合并出来的结果应为:
第一行 6 李四 男
第二行 2 张三 男

你这个问题用字典最方便了
sub test ()
dim arr,brr(),x&,i&,d as object,str1$
set d=createojbedt("scripting.dictionary")
arr=range("A1:C"& range("A65536").end(xlup).row)
redim brr(1 to 3,1 to 1)
for x=1 to ubound(arr)
str1=arr(x,2) & "|" & arr(x,3)
if not d.exists(str1) then
i=i+1
d(str1)=i
redim preserve brr(1 to 3,1 to i)
brr(2,i)=arr(x,2)
brr(3,i)=arr(x,3)
end if
brr(1,d(str1))=brr(1,d(str1))+arr(x,1)
next x
range("E1").resize(ubound(brr,2),3)=application.transpose(brr)'你要统计到哪就把前面的单元格地址改成你要写到的地方即可
end sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-28
Sub test2_1()
Dim v, i%, j%
v = Split([d1], ",")
j = 0
For i = [a65536].End(xlUp).Row To 1 Step -1
If Cells(i, 2) = v(0) And Cells(i, 3) = v(1) Then
j = j + Cells(i, 1)
Range(Cells(i, 1), Cells(i, 3)).Delete
End If
Next i
Range(Cells(1, 1), Cells(1, 3)).Insert
Cells(1, 1) = j
Cells(1, 2) = v(0)
Cells(1, 3) = v(1)
End Sub

在D1 输入 李四,男 然后运行就可以了
第2个回答  2012-12-28
干嘛用VBA呢?
选择 数据--〉排序,主要关键字选姓名,点确定
之后,数据--〉分类汇总,分类字段还是选择姓名,汇总项目在年龄前打钩

或者数据透视表,就没有自动删除功能了。

VBA 将Excel中符合条件的几行数据合并成一行,并将这几行某一列数据汇 ...
next x range("E1").resize(ubound(brr,2),3)=application.transpose(brr)'你要统计到哪就把前面的单元格地址改成你要写到的地方即可 end sub

在EXCEL中满足条件的多行文本合并,将不同行的文本合并到对应型号的第...
首先插入用户模块:在EXCEL窗口中按ALT+F11组合键,调出VBA窗口。在VBA窗口中按上面菜单栏中的“插入-模块”,就会在下面出现一个空白的模块窗口,把代码复制粘贴到这个窗口中就行了。首先在电脑上找到并打开excel表格,进入操作页面如下图,导入自己要操作的数据。然后在对应单元格输入=PHONETIC(A2:A5)...

怎样批量将excel中多行的数据合并为一行,并且自动换行?
=IFNA(IF(MATCH(A1,A:A,)=ROW(),TEXTJOIN(CHAR(10),,OFFSET(A1,,,COUNTIF(A:A,A1))),""),"")

Excel怎么将多列内容按顺序合并到一列?
1、怎么隔行删除(带日期的列) >>按住Ctrl,用鼠标点选要删除的列,然后对选中列右击选择“删除” 2、怎么按顺序将几千列数据合并在同一列里 >>使用Ctrl+Shift+↓逐列复制内容,粘贴到需要的地方,如记事本、Word等。 如果列数太多,可以使用VBA处理。 以上希望能帮上忙!

excel中如何讲B列内容几行合并在成一行。这几行只要是一组就合并
在D2中输入或复制粘贴下列公式 =LOOKUP("座",A$2:A2)下拉填充 此列为辅助列(也可将A列空白填充后,做辅助列)在C2中输入或复制粘贴下列公式 =IF(A2<>"",PHONETIC(INDIRECT("B"&ROW()&":B"&COUNTIF(D:D,A2)+ROW()-1)),"")下拉填充 或者 A列都填上相应的内容,做辅助列,用...

如何用VBA合并Excel中含有相同数据的行并编号
For x= Cells(65536,2).End(xlup).Row to 2 If Cells(x,2)=Cells(x+1,2) Then Cells(x+1,3)=cells(x,3)+Cells(x+1,3)Cells(x,2).EntireRow.Delete end if next

在EXCEL中如何将多行数据合并到一行中
=OFFSET($A$1,ROW(A1)*3-3,)&OFFSET($A$1,ROW(A1)*3-2,)&OFFSET($A$1,ROW(A1)*3-1,)最简单的是 复制 A列 选择B列右键选择性粘贴 就OK了 用公式 就C1=A1&B1 稍微复杂点C1=if(B1="",A1,B1)VBA大概可以这样- -| Dim i For i = 1 To Sheet1.[a65536].End(xlUp)....

excel多行数据合并
2、在excel2106中,准备表格。点选相邻两行。点击编辑中,填充—内容重排。两行文字合并到一行。或在其他单元格,输入公式“=PHONETIC(第一行:第n行)”。实现多行合并在一行。3、首先打开电脑里的EXCEL软件,并打开需要进行合并的表格,如下图所示。以下图为例,使用鼠标托选“花城”和“读者”两栏...

用VBA实现把excel某区域拆分,再每行合并,并且把第一行的值写入每一行...
Count \/ N '第一行合并 ActiveCell.Range("A1", Chr(64 + M) & "1").Select Selection.Merge Selection = arr(1, 1)For i = 2 To N '后面行合并 ActiveCell.Offset(1, 0).Range("A1", Chr(64 + M) & "1").Select Selection.Merge Selection = arr(1, 1)Next i End Sub ...

...vba的朋友进(excel如何将一个表格中所有数据整合到同一竖列中来...
db(y) '当前列需要移动到n列后面 m = Cells(Rows.Count, i).End(xlUp).Row '当前最后一行 j = Cells(Rows.Count, n).End(xlUp).Row 'n列最后一行 arr = Cells(2, i).Resize(m - 1, 1) Cells(j + 1, n)

相似回答