中企动力 > 商学院 > excel相同数据自动合并
  • ?

    Excel多表合并技巧——帮你解决多张表格数据合并的烦恼!

    涵蕾

    展开

    在日常工作中,经常需要将相似结构或内容多个表格进行合并汇总。当数量庞大时人工进行计算比较繁琐,工作量大且易犯错,使用Excel中的“合并计算”功能可以轻松完成这项任务。

    合并计算的数据源可以是同一工作表中的不同表格,也可以是同一工作簿中的不同工作表,还可以是不同工作簿中的表格。现针对第一种情形进行演示说明:

    如图1所示的两个结构相同的数据表“表一”和“表二”,利用合并计算可以轻松将这两个表格进行合并,具体步骤如下。

    图1 原始表

    步骤1选中B10单元格,作为合并计算后结果的存放起始位置,再单击【数据】选项卡【数据工具】命令组的【合并计算】命令按钮,打开【合并计算】对话框,如图2所示。

    图2 打开【合并计算】对话框

    步骤2激活【引用位置】编辑框,选中“表一”的B2:D6单元格区域,然后在【合并计算】对话框中单击【添加】按钮,所引用的单元格区域地址会出现在【所有引用位置】列表框中。使用同样的方法将“表二”的F2:H6单元格区域添加到【所有引用位置】列表中。

    步骤3依次勾选【首行】复选框和【最左列】复选框,然后单击【确定】按钮,即可生成合并计算结果表,如图3所示。

    图3 生成合并计算结果表

    注意:

    1.在使用按类别合并的功能时,数据源列表必须包含行或列标题,并且在“合并计算”对话框的【标签位置】组合框中勾选相应的复选框。

    2.合并的结果表中包含行列标题,但在同时选中【首行】和【最左列】复选项时,所生成的合并结果表会缺失第一列的列标题。

    3.合并后,结果表的数据项排列顺序是按第一个数据源表的数据项顺序排列的。

    4.合并计算过程中不能复制数据源表的格式。如果要设置结果表的格式,可以使用【格式刷】将数据源表的格式复制到结果表中。

  • ?

    Excel数据多表合并计算原来如此简单,你会了吗?

    市民

    展开

    一听到Excel数据多表合并计算,感觉很难,其实简单的Excel数据多表合并计算,实际上很简单的。

    Excel数据多表合一的问题在工作中经常遇到,将两张表合并在在一起计算,我们想合成一张报表,怎么处理呢?

    今天跟各位朋友分享下“Excel数据多表合并计算”操作步骤如下:

    1、将鼠标定位在O1单元格中,然手点击【数据】选项卡下的“合并计算功能”;

    2、在弹出的“合并计算”对话框中,先选择计算方式“求和”,再点击浏览旁边的“红色小箭头”按钮,

    在弹出的“合并计算—引用位置”对话框中,选择左边表格中的数据;

    引用位置选择

    3、将“引用位置”添加到“所有引用位置",再次选“引用位置”红色小箭头按钮

    4、在弹出的“合并计算—引用位置”处选择右表的数据,将"引用位置"添加到“所有引用位置”处,勾选标签位置的“首行”和“最左列”,点击确定;

    选择数据引用位置动态操作图

    5、初步效果出来,左表加右表得出第3个数据表。

    6、将合并计算得出的数据表格进行美化,得出最终数据表格。

    今天分享的Excel多表合并计算你学会了吗?如果是跨表合并的话,选择引用位置到另一个表格提取即可操作。希望今天的分享对各位朋友在工作中有所帮助!

    更多关于Office——Excel操作技巧可加入我们 群 一起交流学习!159534659

  • ?

    EXCEL录入数据时怎样将多个单元格的内容合并到一个单元格中?

    觅波

    展开

    施老师:

    有些同事不太会使用Excel表格,连录入数据都是乱七八糟,本来是可以在一个单元格录入的数据,偏偏弄到多个单元格中,如果录错的数据少,还可以手动移过来,如果数据多的话,一个一个的手动移过来,岂不是要累死,这时候我们也不需在重新建立或修改表格,只需找对规律将多个单元格内容合并到一个单元格中即可。

    一、使用连接符&

    最常用简单的方法,莫过于使用连接符【&】搞定。在需要合并的单元格中输入“=单元格位置&单元格位置”即可,完成后在公式栏中打对勾,然后相同的位置单元格我们可以直接用鼠标拉住单元格右下方的“+”即可合并下方的单元格,如果位置不同的话就用公式“=单元格位置&单元格位置”再算一遍。

    二、 使用函数CONCATENATE

    使用公式【=CONCATENATE(单元格位置,单元格位置,单元格位置)】也可以快速达到合并的效果。

    大家一般用什么方法去合并EXCEL中单元格的内容的?请在下方评论区留言写下你的看法。和施老师一起探讨。

    请关注宁双学好网施老师百家号,本文欢迎转载与分享,转载请注明出处!

  • ?

    Excel中列变行,原列中重复项合并,重复行对应数据按顺序排列,这个怎么操作?

    狄邴

    展开

    这个问题应该这样处理:

    一、将列数据去除重复项:

    可以直接复制出去,删除重复项;

    也可以高级筛选;

    二、去除重复项后的数据复制后转置

    三、写公式取值:

    =IFERROR(INDEX(A$1:A$4,SMALL(IF((B$1:B$4=F$1),ROW(A$1:A$4),4^8),ROW(1:1))),"")

    这是一个数组公式,输入后,需要同时按下CTRL+SHIFT+ENTER

  • ?

    Excel合并操作,你真的会吗?遇到批量合并相同值单元格该怎么办

    郝烨磊

    展开

    大家好,Excel合并单元格,是一个让人又爱又恨的东西!强烈建议,尽量不要把单元格合并在一起,因为合并单元格会给以后的数据处理带来很多的麻烦!但合并单元格的功能,在套打或设定版面时,又有其不可替代的作用,因此让人又爱又恨!

    我们在工作中经常会遇到需要合并相同值的单元格,但是对于Excel有大量需要合并单元格的时候,你真确定要一个一个的合并吗?其实你大可不必慌忙,我们今天分享的VBA小代码内容是批量合并相同值的单列单元格。您只需将以下代码复制到VBE窗口中,执行代码即可。

    照例举个例子,如下图所示,C列是部门字段,需要将相同的部门单元格修改为合并单元格。

    源数据:

    我们看看执行的效果:

    看了上面的动画,是不是感觉非常适合合并大量的单元格。其实上述的代码也是非常简单.

    附上Excel VBA代码

    Sub MergeRange()

    Dim rngData As RangeDim i&, lngCol&, lngFirst, lngLast On Error Resume Next

    Set rngData = Application.InputBox("请选择单列数据列!", Default:=Selection.Address, Type:=8)

    Set rngData = Intersect(rngData.Parent.UsedRange, rngData) 'intersect语句避免用户选择整列造成低效运算

    lngCol = rngData.Column 'rngData所在列 lngFirst = rngData.Row '用户选择的区域并不是一定从第一行开始,使用此句读取开始行

    lngLast = lngFirst + rngData.Rows.Count - 1 'rngData结束行 Application.ScreenUpdating = False '取消屏幕刷新 Application.DisplayAlerts = False '取消消息提醒。 rngData.Parent.Select

    '激活rngData对象所在的工作表,避免跨工作表操作问题 For i = lngLast To lngFirst + 1 Step -1 '对rngData进行从尾向前遍历 If Cells(i, lngCol) = Cells(i - 1, lngCol) Then Cells(i - 1, lngCol).Resize(2, 1).Merge End If Next

    rngData.VerticalAlignment = xlCenter '单元格格式上下居中 Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "合并完成!"End Sub

    PS:

    1,该段代码只支持单列单元格区域,即按照相同的列进行合并。例如A10:A20,B2:B500等。

    2,由于merge合并后的单元格区域只保留右上角首个单元格的值,因此该段代码遍历单元格区域的顺序是从后向前,而不是从前向后,后者是新人常出错之处,注意for-next循环是从Step -1开始的。

    3,当然也可以采用从前向后的遍历顺序,先将Rng装入数组,对数组中的数据进行遍历判断是否等同,标记头尾行号,再批量合并单元格。该方法的效率也会高于遍历单元格两两合并的方法。

    其实合并单元格,对我处理数据的时候,造成非常大的麻烦,我们最好还是少合并单元格。

    以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!

    Excel中的每一个函数都有特定的用途,不是他们没有用处,而是你不了解他们或者用不着,建议同学们收藏起来,万一要用着呢!

    唯有不断学习,才能不被淘汰!

  • ?

    Excel一个数据合并的处理方法

    骗子

    展开

    有的时候工作需要把几个数据放在一个格子里,你还在一个个复制粘贴吗?数量少还好,如果数据特别多,那个时候就欲哭无泪了!

    不用急,其实很简单,一招就可搞定!

    我想合并D-F格的数据,先看图

    下面看看怎么操作

    在H格输入=合并格+“&”最后回车,最后在右下角拉下去,一次就搞定啦!是不是很简单

    如果你有什么疑惑或者想知道其它的什么操作方法,留言,后期会推出哦!

  • ?

    excel中如何相同名称如何把他的其他数据合并一起

    纯爱

    展开

    我们想把姓名一样的人员,语文的分数匹配到一起。我们可以用到Vlookup函数,比如下面俩个表格:

    (表格1)

    (表格2)

    第一种方法,数据比较小,我们可以复制对应的分数去第一个表中。

    如果数据比较复杂可以用VLOOKUP来按姓名匹配语文分数:

    (表格3)

    公式为=vlookup(A2,sheet2!A1:B6,2,0)

    A2为我们要匹配的对象,sheet2!A1:B6为我们要匹配(提取)的数据所在的表格(表格2),分数在第二列,所以为2,如果我们要匹配的是人名则是所在的列为1。精确匹配则是1.模糊匹配则是0.

    鼠标定位到75的单元格,当鼠标变成+时双击鼠标左键则下面的数据都会显示。

    注意:精确匹配必须得名称一致。否则会提示#N/A。

    这个公式可以帮我们处理很大的数据,好好学习吧

  • ?

    EXCEL中如何批量把相同名称庞大的数据相加

    蒂凡妮

    展开

    日常工作中我们有碰到过要把相同名称所对应的数据相加,如果说数据不是很多可以用简单的sum函数可以完成。当数据比较庞大,SUM可能就不好用了。

    比如表格(1)要把名称相同的数据都相加,简便的方法是用SUMIF,有俩种用法

    表格(1)

    一、单独算“梨、苹果。。”的数据,直接点击B19为条件区域则可以按表格(1)中可以轻松求出。

    =sumif(B1:B17,B19,C1:C17) 如果求苹果则把B19改成B18

    二、批量算出所要相加的名称数据则用到:

    =SUMIF(B1:B17,{"苹果";"梨";"香蕉";"葡萄";"橘子";"橙子";"西瓜"},C1:C17)

    表格(2)

    B1:B17则是我们要引用的区域(及我们求和的苹果,梨。。。名称相同的地方)我们输入的,{"苹果";"梨";"香蕉";"葡萄";"橘子";"橙子";"西瓜"}和单独输入的“苹果”。。。为条件区域。表格(1)(2)

    3.C1:C17则是我们要求和的区域

    俩种方法都没有多大区别,只是条件区域用{}把几个名称联系在一起组成一个数组

    4.如果要让结果按列显示,则用;(分号) 如表格(1),如果要让结果按行显示,则用,(逗号)。

    表格(3)

    5.批量填充下来的话,则选中求和的区域表格(3)中的红色框框中,点击输入函数的框框表格(4),然后按住shift+ctrl+enter则所有求和都可以了如表格(5)

    表格(4)

    表格(5)

    简单几步,再复杂的求和也可以搞定,如果名称排序没有规律,可以用这个函数来求和,是不是比用sum一个个求和快呢

  • ?

    Excel如何用VBA自动合并同目录下的多个excel工作簿文件

    东方白

    展开

    在excel的使用过程中,有时候我们需要将同目录下有着相同标题的多个excel工作簿合并到一个excel工作簿中,比如下面这种情况,5个年级的学生名单合并到一个表里面去。

    常用的做法是手工打开每个文件,复制粘贴到学生名单汇总一个表里去。

    这里介绍一个偷懒的方法,用VBA代码自动合并。代码分4段,第1段是主代码,后面3段是自定义函数。建议把代码复制粘贴到个人工作簿的模块里,方便调用。打开学生名单汇总.xlsx ALT+F8运行该代码。

    以下是具体代码,复制粘贴

    Sub 同目录下合并多个excel工作簿()

    'On Error Resume Next '// 发生错误,自动执行下一句,就是忽略错误

    Application.ScreenUpdating = False '//关闭屏幕刷新

    Application.DisplayAlerts = False '//关闭系统提示

    t = Timer '//开始时间

    Set SH0 = ActiveWorkbook.Worksheets(1)

    SH0.Cells.Clear '//清空保存区域,全部数据第一行是标题行,且只占一行,无合并单元格

    ARR = FileAllArr(ActiveWorkbook.Path, "*.xlsx", ActiveWorkbook.Name, False) '//详见函数说明

    SHName = "sheet1" '//要求所有工作簿内需要统计的工作表名称相同,

    For i = 0 To UBound(ARR)

    Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=" & ARR(i) '//Excel2007

    ' Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';data source=" & & ARR(I) '//OFFICE2003,根据情况选择

    StrSQL = "SELECT *,'" & GetPathFromFileName(ARR(i), False) & "' AS 来自工作簿 FROM [" & SHName & "$]" '//SQL语句自己发挥吧,这里是精髓。

    IROW = SH0.Range("A1048576").End(3).Row + 1

    If IROW <= 2 Then

    IROW = 1

    Crr = GET_SQLCoon(StrSQL, Str_coon, True) '//第一次,带上标题

    Else

    Crr = GET_SQLCoon(StrSQL, Str_coon, False)

    End If

    SH0.Range("A" & IROW).Resize(UBound(Crr, 1) + 1, UBound(Crr, 2) + 1) = Crr '//粘贴查询结果

    Next

    Application.ScreenUpdating = True '//恢复屏幕刷新

    Application.DisplayAlerts = True '//恢复系统提示

    MsgBox "汇总用时:" & Format(Timer - t, "#0.0000") & " 秒", , "北极狐提示!!" '//提示所用时间

    End Sub

    Rem 下面是为方便整理的自定义函数,上面的代码执行必不可少哟!!

    '*******************************************************************************************************

    '功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)

    '函数名: FileAllArr

    '参数1: Filename 需查找的文件夹名 不含最后的"\"

    '参数2: FileFilter 需要过滤的文件名,可省略,默认为:[*.*]

    '参数3: Liwai 剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name

    '参数4: Files 是否只要文件夹名,可省略,默认为:FALSE

    '返回值: 一个字符型的数组

    '使用方法:arr = FileAllArr(ThisWorkbook.Path, "*.xls", ThisWorkbook.Name,false)

    '*******************************************************************************************************

    Public Function FileAllArr(ByVal Filename As String, Optional ByVal FileFilter As String = "*.*", Optional ByVal Liwai As String = "", Optional ByVal Files As Boolean = False) As String()

    Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象

    Set Did = CreateObject("Scripting.Dictionary")

    Dic.Add (Filename & "\"), ""

    i = 0

    Do While i < Dic.Count

    Ke = Dic.keys '开始遍历字典

    MyName = Dir(Ke(i), vbDirectory) '查找目录

    Do While MyName <>""

    If MyName <> "." And MyName <> ".." Then

    If (GetAttr(Ke(i) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录

    Dic.Add (Ke(i) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目

    End If

    End If

    MyName = Dir '继续遍历寻找

    Loop

    i = i + 1

    Loop

    Dim arrx() As String

    i = 0

    If Files = True Then '//是否只输出文件夹名

    For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例

    ReDim Preserve arrx(i)

    If Ke <> Filename & "\" Then '//自身文件夹除外

    arrx(i) = Ke

    i = i + 1

    End If

    Next

    FileAllArr = arrx

    Else

    For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例

    MyFileName = Dir(Ke & FileFilter) '过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsx

    Do While MyFileName <>""

    If MyFileName <> Liwai Then '排除例外文件

    ReDim Preserve arrx(i)

    arrx(i) = Ke & MyFileName

    i = i + 1

    End If

    MyFileName = Dir

    Loop

    Next

    FileAllArr = arrx

    End If

    End Function

    '****************************************************************

    '*'****************************************************************************************************

    '函数: GetPathFromFileName 根据全路径获得文件名

    '参数1:strFullPath 完整路径

    '参数2:kzm true 返回字符串含扩展名

    '参数3:strSplitor 各级文件夹分隔符

    '作用: 从完整路径获取返回: 文件名(true带扩展名)

    '使用方法: msgbox GetPathFromFileName("C:\windows\text.txt",true)

    '*'****************************************************************************************************

    Public Function GetPathFromFileName(ByVal strFullPath As String, Optional ByVal kzm As Boolean = True, Optional ByVal strSplitor As String = "\") As String

    Dim FileName1 As String

    Dim FNAME As String

    FileName1 = Left$(strFullPath, InStrRev(strFullPath, strSplitor, , vbTextCompare))

    FileName1 = Replace(strFullPath, FileName1, "")

    If kzm = False Then

    GetPathFromFileName = Left(FileName1, InStr(FileName1, ".") - 1)

    Else

    GetPathFromFileName = FileName1

    End If

    End Function

    '*'****************************************************************************************************

    '*****************************************************************************************

    '函数名: GET_SQLCoon

    '函数功能: 获得指定SQL的查询结果,自定义连接字符串,可以连接各种数据库

    '返回值: 返回一个二维数组

    '参数1: StrSQL 字符类型 SQL查询语句

    '参数2: Str_coon 字符类型 数据库连接语句

    '参数3: Biaoti 可参数选 是否输出标题,默认带有标题

    '使用方法: Arr = GET_SQLCoon(StrSQL,Str_coon,true)

    ' Arr(0,1) '//数组第一行为标题行,从i=1 开始是数据

    ' Sh2.Range("A2").Resize(UBound(ARR, 1) + 1, UBound(ARR, 2) + 1) = ARR

    '*****************************************************************************************

    Public Function GET_SQLCoon(ByVal StrSQL As String, ByVal Str_coon As String, Optional Biaoti As Boolean = True) As Variant()

    On Error Resume Next ' 改变错误处理的方式。

    Dim Cn, RS

    Err.Clear

    Set Cn = CreateObject("Adodb.Connection") '//新建一个ADO连接

    Set RS = CreateObject("adodb.recordset")

    Cn.Open Str_coon

    RS.Open StrSQL, Cn, 1, 3

    If RS.RecordCount > 0 Then '//如果找到数据

    If Biaoti = True Then

    ReDim ARR(0 To RS.RecordCount, 0 To RS.Fields.Count - 1)

    For a = 0 To RS.Fields.Count - 1 '//导入标题

    ARR(0, a) = RS.Fields(a).Name

    Next

    For i = 0 To RS.RecordCount - 1 '//导入数据

    For a = 0 To RS.Fields.Count - 1

    ARR(i + 1, a) = RS.Fields(a).Value

    Next a

    RS.MoveNext

    Next

    Else

    ReDim ARR(0 To RS.RecordCount - 1, 0 To RS.Fields.Count - 1)

    For i = 0 To RS.RecordCount - 1 '//导入数据

    For a = 0 To RS.Fields.Count - 1

    ARR(i, a) = RS.Fields(a).Value

    Next a

    RS.MoveNext

    Next

    End If

    Else '//如果没有找到数据

    ReDim ARR(1, 1)

    ARR(0, 0) = ""

    End If

    GET_SQLCoon = ARR

    Cn.Close '//关闭ADO连接

    Set RS = Nothing

    Set Cn = Nothing '//释放内存

    End Function

    '*****************************************************************************************

  • ?

    Excel技巧:多个相同excel表格如何合并到一起!

    新筠

    展开

    从事互联网行业的小编们,经常会遇到一个问题,就是导出多个Excel表格数据,经常是多个数据合并到一个excel表格里来做数据分析,那么如何快速的合并excel表格呢?

    1、把所有excel文件放在同一个文件夹里。如下图:

    2、打开汇总excel,并右键单击sheet1,找到“查看代码”,单击进去。进去之后就看到了宏计算界面。如图所示:

    3、然后我们把下面代码复制进去,然后找到工具栏上面的“运行”下的“运行子过程/用户窗体”,代码如下,如图所示:

    Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As Workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StringApplication.ScreenUpdating = FalseMyPath = ActiveWorkbook.PathMyName = Dir(MyPath & "\" & "*.xls")AWbName = ActiveWorkbook.NameNum = 0Do While MyName <> ""If MyName <> AWbName ThenSet Wb = Workbooks.Open(MyPath & "\" & MyName)Num = Num + 1With Workbooks(1).ActiveSheet.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)For G = 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)NextWbN = WbN & Chr(13) & Wb.NameWb.Close FalseEnd WithEnd IfMyName = DirLoopRange("B1").SelectApplication.ScreenUpdating = TrueMsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"End Sub

    运行几十秒钟就OK啦!如果表格数据过多的话,时间会久一点。

excel相同数据自动合并

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP