精华内容
下载资源
问答
  • 多列相同数据合并求和
    千次阅读
    2021-12-17 16:26:14

    数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

    提示:

    0 <= index <= 11111111

    1 <= value <= 100000

    输入描述:

    先输入键值对的个数n(1 <= n <= 500)
    然后输入成对的index和value值,以空格隔开

    输出描述:

    输出合并后的键值对(多行)

    示例1

    输入:

    4
    0 1
    0 2
    1 2
    3 4
    输出:
    0 3
    1 2
    3 4
    

    更多相关内容
  • 本例主要介绍如何在excel中合并同类项数据,也就是去除某字段数据重复值,然后将对应的数据求和,方法很简单,也很实用,对于经常使用excel的人员,能大量减少工作量提高工作效率。操作步骤:1、首先来看一下原始...

    本例主要介绍如何在excel中合并同类项数据,也就是去除某字段数据的重复值,然后将对应的数据求和,方法很简单,也很实用,对于经常使用excel的人员,能大量减少工作量提高工作效率。

    操作步骤:

    1、首先来看一下原始数据:

    A列是姓名,有重复的项目。B列是数量。要求求得A列每个人的数量合计。

    2、首先,复制A列数据,粘贴到C列。

    3、选中C列数据,选择【数据】-【删除重复项】。

    4、选择【以当前选定区域排序】,然后点击【删除重复项】。

    5、因为C列包含数据表头“姓名”,因此选择【数据包含标题】。

    6、点击【确定】按钮后将删除C列数据的重复项,留下不重复结果如下图:

    7、双击D2,输入公式=SUMIF(A$2:A$7,C2,B$2:B$7),回车并下拉填充公式就得到了想要的结果。

    8、SUMIF函数的用法简介:

    SUMIF函数的语法是这样的:=SUMIF(条件区域,条件,求和数据区域)

    举例来说=SUMIF(A$2:A$7,C2,B$2:B$7),就是求A$2:A$7区域里等于C2单元格的值对应B$2:B$7数据的合计。

    以上就是如何在excel合并同类项数据并求和(去除重复项)的方法,希望对大家有所帮助,谢谢大家阅读本篇文章!

    展开全文
  • 合并相同项目_ExcelVBA_

    2021-10-04 07:17:06
    遍历表中字段,寻找并合并表中某些相同数据,并在指定工作表或单元格中显示合并结果
  • 在之前我们是通过ExcelDataReader插件将Excel的内容导入datagridview控件,那今天是将导入的数据从datagridview中导出为Excel。 在导出时需要进行一些特殊的处理。 (一)界面设计 我的界面不是那么美观,哈哈哈,我...

    第一次真正意义上做小项目,根据对方所提需求,慢慢的学习并实践。
    在之前我们是通过ExcelDataReader插件将Excel的内容导入datagridview控件,那今天是将导入的数据从datagridview中导出为Excel。
    在导出时需要进行一些特殊的处理。

    (一)界面设计

    我的界面不是那么美观,哈哈哈,我也想好看,搞不出来,呜呜。
    在这里插入图片描述

    (二)代码块

    导入的过程上一篇内容有了,这块主要是导出过程的代码啦。

    (1)导出数据部分

      private void ExportToExcel(DataGridView dataGridView1)
    
            {
                if (txtFileName.Text.Equals(""))
                {
                    MessageBox.Show("未打开文件,请打开文件!");
                    return;
                }
                if (dataGridView1.Rows.Count == 0)
                {
                    MessageBox.Show("请选择表格");
                    return;
                }
                if (addColumns.Text == "" || joinColumns.Text == "" || duplicateColumn.Text == "")
                {
                    MessageBox.Show("请输入要操作的列!");
                    return;
    
                }
                //声明一个字符串来接收文本的路径
                string fileName = "";
                string saveFileName = "";
                SaveFileDialog saveDialog = new SaveFileDialog();
                //扩展名
                saveDialog.DefaultExt = "xlsx";
                saveDialog.Filter = "Excel文件| *.xlsx;*.xls";
                //打开文件夹保存位置
                saveDialog.ShowDialog();
                saveFileName = saveDialog.FileName;
              
                if (saveFileName.IndexOf(":") < 0) return;  //被点了取消
    
                //创建Excel
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    
                //判断创建Excel有没有成功
                if (xlApp == null)
    
                {
                    MessageBox.Show("无法创建Excel对象,您可能未安装Excel");
    
                    return;
    
                }
    
                //工作簿对象
                Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
                //System.Reflection.Missing miss = System.Reflection.Missing.Value;
    
                //创建工作簿(Workbook:即Excel文件主体本身)
                Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    
                //创建工作表(即Excel里的子表sheet)1表示在子表sheet1里进行数据导出
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //取得sheet1
    
                //将数据导入到工作表的单元格
                //写入标题行
                for (int a = 0; a < dataGridView1.Columns.Count; a++)
                {
                    if (this.dgvData.Columns[a].Visible == true)
                    {
                        //列标题单元格的标题文本  //excel单元格第一个从索引1开始,第一行第a+1列,因为a从0开始取
                        worksheet.Cells[1, a + 1] = dataGridView1.Columns[a].HeaderText;
                    }
                }
                
    
    
                ///把DataGridView当前页的数据保存在Excel中 ///
                //求和列值
            
                int addColumn = 1;
                addColumn = Convert.ToInt32(addColumns.Text);
                //addColumn = addColumn + 1;
                //拼接列
                int joinColumn = 1;
                joinColumn = Convert.ToInt32(joinColumns.Text);
                //joinColumn = joinColumn + 1;
                //重复列
                int duplicateIs = 1;
                duplicateIs = Convert.ToInt32(duplicateColumn.Text);
    
                bool isDuplicate;
                int i = 0;
                while (i < dataGridView1.Rows.Count)
                {
                   
                    isDuplicate = false;//是否重复  
                    List<int> list = new List<int>();
                    //行之间比较
                    for (int nbRowCompare = i; nbRowCompare < dataGridView1.Rows.Count; nbRowCompare++)
                    {
                        if (dataGridView1[duplicateIs - 1, nbRowCompare].Value != null)
                        {
                            //判断是否重复
                            if (dataGridView1[duplicateIs - 1, nbRowCompare].Value.ToString().Equals(dataGridView1[duplicateIs - 1, i].Value.ToString()))
                            {
                                //重复的放在这里面  (把对象放入集合)
                                list.Add(nbRowCompare);
                                isDuplicate = true;
                            }
                        }
                    }                
                    //Console.WriteLine(list);
                    //如果重复,将第二列的内容拼接   拼接第几列
                    if (isDuplicate)
                    {                   
                        for (int a = 1; a < list.Count; a++)
                        {
                            //拼接      如果为空则无,不为空则连接
                            if (dataGridView1[joinColumn - 1, list[a]].Value == null || (dataGridView1[joinColumn - 1, list[a]].Value.ToString()).Equals(""))
                            {
                            }
                            else
                            {
                                拼接
                                dataGridView1[joinColumn - 1, list[0]].Value += "," + (string)(dataGridView1[joinColumn - 1, list[a]].Value);
                                //求和列
                                dataGridView1[addColumn - 1, list[0]].Value = Convert.ToInt32(dataGridView1[addColumn - 1, list[0]].Value.ToString()) + Convert.ToInt32(dataGridView1[addColumn - 1, list[a]].Value.ToString());
                            }
                        }
                        //删除重复行
                        for (int a = list.Count - 1; a > 0; a--)
                        {
                            dataGridView1.Rows.RemoveAt(list[a]);
                        }
                    }
    
                    for (int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
    
                        if (dataGridView1[j, i].Value != null)
                        {
                        //Fun函数调用
                          dataGridView1[joinColumn - 1, i].Value = Fun(dataGridView1[joinColumn - 1, i].Value.ToString());
                            worksheet.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
                        }
                    }
    
                    i++;
                    ProgressBar1.Maximum = dataGridView1.Rows.Count;
                    ProgressBar1.Value = i;
                    Application.DoEvents();
                }
                    //该对象代表整个范围列(或列),其中包含指定的范围。  //列宽自适应
                    //worksheet.Columns.EntireColumn.AutoFit();
                    //提示框
                    MessageBox.Show(fileName + "保存成功");
                    if (saveFileName != "")
                    {
                        try
                        {
                            workbook.Saved = true;
                            //保存工作簿的副本文件但不修改打开工作簿在内存中。
                            workbook.SaveCopyAs(saveFileName);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("导出文件可能正在被打断!" + ex.Message);
    
                        }
                    }
                    //释放可能还没有释放的进程
                    xlApp.Quit();
                    GC.Collect();
            }
    

    (2)拆分字符函数

     public string Fun(string input)
            {
                List<string> resultStr = new List<string>();
                //例如:   C164 - C166,C360 - C362
                string[] vs1 = input.Split(','); //C164-C166  C360-C362
                foreach (string s in vs1)
                {
                    if (s.Contains('-'))
                    {
                        //C164 - C166
                        string[] vs2 = s.Split('-');
                        //C164  C166
                        string start = Regex.Replace(vs2[0], "[a-z]", "", RegexOptions.IgnoreCase);//C164
                        string end = Regex.Replace(vs2[1], "[a-z]", "", RegexOptions.IgnoreCase);//C166
                        string code = vs2[0].Replace(start, "");//C = ""
                        int start1 = Convert.ToInt32(start);//164
                        int end1 = Convert.ToInt32(end);//166
                        for (int a = start1; a <= end1; a++)
                        {
                            //164
                            string rs = code + a;//C164
                            resultStr.Add(rs);
                        }
                    }
                    else
                    {
                        resultStr.Add(s);
                    }
    
                }
                //resultStr C164 C165 C166 C360 C361 C362
                return string.Join(",", resultStr);
            }
    

    (3)结果展示

    在这里插入图片描述
    我这个板块具体得功能是选择相应料号列、点位列、点位数量列后,完成将料号列重复行删除,在删除前,将它的点位列拼接上,同时计算点位用量列的和。

    (4)例子

    导出前:
    在这里插入图片描述
    导出后:
    在这里插入图片描述
    在某些内容我可能解释的不是很清楚,大家可以看代码里的注释。有什么问题,可私或评论区见。希望对有需要的伙伴有所帮助。

    展开全文
  • getSpanNum (curName) { //把数据赋值 但是这后台给你数据的时候 不一定是你相同数据都是在一行里面放到(要保证相同数据列在一起 )我下面会 写个排序把他们在一起 const data = this.caseTableData this....
    :span-method="objectSpanMethod"   此方法起作用
    
     <el-table class="elTable" :data="caseTableData" border :span-method="objectSpanMethod" show-summary >
          <el-table-column prop="className" label="当事人类型" align="center"> </el-table-column>
        </el-table>
      data () {
        return {
          spanArr: [],
          caseTableData: [ ], //八大类 表1
        }
      },	
    
       // 列合并1
        objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
          //columnIndex 合并第几列就写第几列
          if (columnIndex === 1) {  //此处为第二列数据
            const rowNum = this.spanArr[rowIndex]
            const colNum = rowNum > 0 ? 1 : 0
            return {
              rowspan: rowNum,
              colspan: colNum
            }
          }
        },
    
    此方法是不够的 下面专门写一个函数在赋给表格值的时候 执行;
    
     getSpanNum (curName) {   
      //把数据赋值  但是这后台给你数据的时候 不一定是你相同的数据都是在一行里面放到(要保证相同的数据列在一起 )我下面会 写个排序把他们列在一起
          const data = this.caseTableData  
          this.spanArr = []
          for (let i = 0; i < data.length; i++) {
            if (i === 0) {
              this.spanArr.push(1);
              this.pos = 0
            } else {
              // 判断当前元素与上一个元素是否相同  curName(批次字段)
              if (data[i][curName] === data[i - 1][curName]) {
                this.spanArr[this.pos] += 1;
                this.spanArr.push(0);
              } else {
                this.spanArr.push(1);
                this.pos = i;
              }
            }
          }
        },
    
    
    
    	现在开始把 数据赋值给表格 
            let list = res.data    ----这是后台给的的数据
            list.sort((a, b) => {
              return a.className> b.className? 1 : -1  //把分类 一样的数据排放在一起
            })
            this.caseTableData = list
    
            this.getSpanNum('className') //然后调用这个方法  就完成了 
    

    在这里插入图片描述

    展开全文
  • import pandas as pd from openpyxl import load_workbook file_path = r'C:\Users\Administrator\Desktop\01.xlsx' df = pd.read_excel(file_path,sheet_name='Sheet1') df df[['斤数','金额']] = df.groupby(...
  • 假如某一包含多种重复单元,但是重复的单元对应的其它却不相同,需求便是指定某一,寻找其中相同的元素,对两行元素进行合并。如下图所示的源数据, 可以看到,该Excel表格的A有很多重复项,对他们进行合并...
  • 有时候需求就比较奇葩 要实现这种基本的表格很...我遇到的需求就是要去合并多列相同的元素,并且跟前面相互照应 如果按照官方的方式是不可能实现这种效果的 上代码 <el-table :data="tableData" width="100%
  • 主要介绍了Java8 stream 中利用 groupingBy 进行字段分组求和案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 上一篇我们已经试过用Excel自带的索引完成了一次SQL检索的操作,今天小编带你用VBA实现SQL检索,并实现相同求和的功能 SELECT 字段名1,SUM(字段名2) FROM [原始数据$]) GROUP BY 字段名1 ORDERBY 字段名3 废话...
  • pandas读取一组数据,可能存在重复索引,虽然可以利用drop_duplicate直接删除,但是会删除重要信息。 比如同一ID用户,次登录...以上这篇对DataFrame数据中的重复行,利用groupby累加合并的方法详解就是小编分享给大
  • hive 相同key 多行多列合并 处理

    千次阅读 2020-12-22 15:16:22
    概述 在join 的过程中我们很容易出现数据膨胀现象,即一行...第二种:将相同key对应多行的情况合并成一行,(如果一行有个字段,还有可能合并为一个字段中) 实现方式 如源表结构: pcgid string mobilegid string
  • 自动求和代码如下: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex >= 0) { sum += Convert.ToInt32(e.Row.Cells[4].Text);...
  • 个EXCEL表格求和在EXCEL汇总表中点击数据/合并计算,函数选择求和,引用位置选择第1张表,进行添加,再选择第2张表,进行添加,以此类推。根据表的样式选择首行、最左,可二者全选,确定。怎样在EXCEL中做到个...
  • 在需求开发中,我们需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为User,有name、value两个属性,其中name表示唯一值,需要value进行求和,并最后保持一份对象。 例如:(“A”, 1),(“A”, 2),...
  • dataset.groupby("Book_id").Rating.sum() # 对Book_id对应的Rating的值求和 dataset.groupby("Book_id").Rating.mean() # 对Book_id对应的Rating的值求均值
  • 注意点: 1. <el> 中 加:summary-method=”getSummaries” 2. <el> 中要加 prop // 房间号的合计去掉 getSummaries (param) { const { columns, data } = param const sums = [] columns.forEach((column, ...
  • 个dataframe的列合并与行合并

    千次阅读 2021-02-04 11:46:15
    数据表,以时间为索引,并选取需要分析的进行合并。在本文中,拿到的数据是同一时期的不同设备的特征数据,需要提取对应的进行时间合并,在合并过程中存在以下问题: 1、时间索引存在重复,需要删除重复项...
  • R 两表格跟据某列相同值进行合并

    千次阅读 2022-03-24 13:52:51
    将表1的ID 对应到下面这个表2,将对应到的一整行整合过去(表1ID重复的则取第一行)表1表2 data1 <- read.csv("blca_clusterInfo.csv") data2 <- read.csv("subtype.csv") length(data1$ID) length(unique...
  • 1、将相同ID号,相同物料的行合并 2、将同一个ID号的所有项都相加求和 附上代码: Sub test1() Dim d1 As Object, d2 As Object, arr, i As Integer, k, brr Set d1 = CreateObject("scripting....
  • DataTable,相同列合并

    千次阅读 2018-05-24 10:34:00
    protected DataTable MergeDataTable(DataTable dt1, DataTable dt2, string KeyColName) { //合并列 DataTable ndt1 = dt1.Copy(); DataTable ndt2 = dt2.Copy(); ...
  • python pandas行、列求和及累加求和

    千次阅读 2020-12-08 23:01:42
    python pandas行、列求和及累加求和data[‘合计’]=data.apply(lambda x: x.sum(),axis=1) #按相加各行数data.loc[‘小计’]=data.apply(lambda x: x.sum(),axis=0) #按行相加各,增加小计,要注意的是小计中变成...
  • 对列表中的数据进行遍历,然后根据元素的下标依次进行相邻位置的判断,并且要求元素是为“正常”,所以需要添加一个数值累加器,获取连续重复的次数,代码如下 输出结果如下:(判断“正常”连续重复元素共5次,与...
  • 你看下是这样吗?import pandas as pddata=pd.read_excel("D:\\360安全浏览器下载\\...金额, [0,5, 20, 50,float('inf')])#根据标识1这一进行数据筛选后进行分组汇总temp1=data[data["标识1"]==1]["金额"].gr...
  • http://blog.csdn.net/rainyspring4540/article/details/50231435这里是oracle10g的环境数据库结构如下: 如果我想将相同名字的成绩显示在同一行,有2中基本展示:第一种展示(显示在同一行的不同上) 其sql如下:...
  • R语言如何合并Excel多行的重复数据

    千次阅读 2022-03-16 10:59:03
    R合并Excel多行的重复数据
  • 每一条记录就是一个文档,每个文档中的键不一定相同,键的个数也不一定相等,对这样嵌套的文档结构关系,进行分组统计就比较麻烦。比如有以下数据集 {"name": "test","num": {"text": 1,"face": 2}}, {"name": "test...
  • 需求:需要通过主键id更新某些字段,但是...所以需要把这些条id合并为一条,放在一个框里面,直接去复制使用。 解决方案sql: select GROUP_CONCAT(id) from a where age > 20; 结果: 我们就可以直接复制使用了
  • 绝对有用的excel 合并 ,两列或者多列合并成一行,多行合并成一列
  • (学习更翻到本文最后)目 录技巧1、单元格内强制换行技巧2、锁定标题行技巧3、打印标题行技巧4、查找重复值技巧5、删除重复值技巧6、快速输入对号√技巧7、万元显示技巧8、隐藏0值技巧9、隐藏单元格所有值。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,021
精华内容 8,408
关键字:

多列相同数据合并求和

友情链接: Examples.rar