求大神们指点!!!急!!!答对加微信发红包!!! excel问题 25

表达一下,我要把表二做成表一,但是每一个公司的区域很多,我要把他们合并到一个单元里。怎么搞呢??... 表达一下,我要把表二做成表一,但是每一个公司的区域很多,我要把他们合并到一个单元里。怎么搞呢?? 展开
 我来答
飞雨飘eM
2018-11-03 · TA获得超过285个赞
知道小有建树答主
回答量:351
采纳率:81%
帮助的人:185万
展开全部

可以用两种方式达成效果,一种是VBA宏模式。一种数据透视表

VBA宏模式需先对表进行排序,然后循环判断需要合并的单元格范围,合并单元格即可。

数据透视表可以直接得出,但不能合并单元格,可以清空相同内容。

宏代码如下,我以排序第一列和第二列为标准

Sub hb()
Dim i%
rowlong = [a50000].End(xlUp).Row
    ActiveSheet.Sort.SortFields.Add Key:=Range(Cells(2, 1), Cells(rowlong, 1)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range(Cells(2, 2), Cells(rowlong, 2)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet6").Sort
        .SetRange Range(Cells(1, 1), Cells(rowlong, 100))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
For i = 2 To rowlong
    If Cells(i, 1) = Cells(i + 1, 1) And Cells(i - 1, 1) <> Cells(i, 1) Then toprow = i
    If Cells(i, 1) <> Cells(i + 1, 1) And i <> toprow Then
        Range(Cells(toprow + 1, 1), Cells(i, 1)) = ""
        Range(Cells(toprow, 1), Cells(i, 1)).Merge
    End If
Next
rowlong = [b50000].End(xlUp).Row
For i = 2 To rowlong
    If Cells(i, 2) = Cells(i + 1, 2) And Cells(i - 1, 2) <> Cells(i, 2) Then toprow = i
    If Cells(i, 2) <> Cells(i + 1, 2) And i <> toprow Then
        Range(Cells(toprow + 1, 2), Cells(i, 2)) = ""
        Range(Cells(toprow, 2), Cells(i, 2)).Merge
    End If
Next
End Sub
追问
大神我试试看哈,稍等
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式