excel中按多列进行匹配并对数量进行累加

2024-06-15 17:20

本文主要是介绍excel中按多列进行匹配并对数量进行累加,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司的生产计划是按订单下发,但不同订单的不同产品中可能有用到相同的配件,按单1对1时,对计算机十分友好,但对于在配件库检料的工人来说就比较麻烦,上百条产品里可能会有多条都是相同的产品,首先考虑的办法是把数据进行了排序,让相同代号、材质、名称的数据挨在一起,但这样也并不是最优的,然后考虑的办法是把所有代号+材质+名称+领料人相同的数据的请领数量累加到一起,使其只有一条。下面是生产系统导出到excel中的数据,其中黄色底纹的就是相同数据:

代码就不细说了,做个流程图出来:

下面是代码,由于vba不能像javascript那样处理JSON数据,所以在用数组处理时比较麻烦:

Option ExplicitPrivate infos() As String'汇总
Sub myTotal()Dim totalRowNumber As IntegerDim i As IntegerDim j As IntegerDim arrCount As Integer     '数组数据位置Dim id As String'数组初始位置arrCount = 2'获得总行数totalRowNumber = Sheets(1).[a1].End(xlDown).Row'调整数组大小(考虑到避免多次调整数组大小,所以直接定义一个跟数据行一样多的数组)ReDim infos(2 To totalRowNumber, 1 To 13)For i = 2 To totalRowNumberid = Sheets(1).Cells(i, 5) & "|" & Sheets(1).Cells(i, 6) & "|" & Sheets(1).Cells(i, 7) & "|" & Sheets(1).Cells(i, 8)If isExist(id) Then'判断当前行是否已存在数组中,如果存在则请领数量累加addRequireNumber id, Sheets(1).Cells(i, 9), Sheets(1).Cells(i, 2)Else'如果不存在则加入到数组中For j = 1 To 13infos(arrCount, j) = Sheets(1).Cells(i, j)Next'数组条数+1arrCount = arrCount + 1End IfNext'清除区域数据Sheets(1).Range(totalRowNumber + 1 & ":65535").ClearContents'输出数组到表格中For i = 2 To UBound(infos)'如果infos(i,1)没有内容,说明后面都是空的行,所以就结束函数了If Len(infos(i, 1)) = 0 Then Exit SubFor j = 1 To 13Sheets(1).Cells(totalRowNumber + i, j) = infos(i, j)NextNext
End Sub'判断数组是否存在
Private Function isExist(ByVal name As String) As BooleanDim i As IntegerDim id As StringFor i = 2 To UBound(infos)id = infos(i, 5) & "|" & infos(i, 6) & "|" & infos(i, 7) & "|" & infos(i, 8)If name = id ThenisExist = TrueExit FunctionEnd IfNextisExist = False
End Function'数量累加
Private Sub addRequireNumber(ByVal name As String, ByVal requireNumber As Long, ByVal order As String)Dim i As IntegerDim id As StringDim subOrder As String'去掉订单的年号subOrder = Mid(order, InStr(1, order, "-") + 1, Len(order))For i = 2 To UBound(infos)id = infos(i, 5) & "|" & infos(i, 6) & "|" & infos(i, 7) & "|" & infos(i, 8)If name = id Theninfos(i, 9) = Str(Int(infos(i, 9)) + Int(requireNumber))'如果订单号中没有包含相同的字符才添加If InStr(1, infos(i, 2), subOrder) = 0 Theninfos(i, 2) = infos(i, 2) & "/" & subOrderEnd IfExit SubEnd IfNext
End Sub

这篇关于excel中按多列进行匹配并对数量进行累加的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064094

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

C#实现将Excel工作表拆分为多个窗格

《C#实现将Excel工作表拆分为多个窗格》在日常工作中,我们经常需要处理包含大量数据的Excel文件,本文将深入探讨如何在C#中利用强大的Spire.XLSfor.NET自动化实现Excel工作表的... 目录为什么需要拆分 Excel 窗格借助 Spire.XLS for .NET 实现冻结窗格(Fro

使用Python实现高效复制Excel行列与单元格

《使用Python实现高效复制Excel行列与单元格》在日常办公自动化或数据处理场景中,复制Excel中的单元格、行、列是高频需求,下面我们就来看看如何使用FreeSpire.XLSforPython... 目录一、环境准备:安装Free Spire.XLS for python二、核心实战:复制 Exce

pandas使用apply函数给表格同时添加多列

《pandas使用apply函数给表格同时添加多列》本文介绍了利用Pandas的apply函数在DataFrame中同时添加多列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、Pandas使用apply函数给表格同时添加多列二、应用示例一、Pandas使用apply函

pandas批量拆分与合并Excel文件的实现示例

《pandas批量拆分与合并Excel文件的实现示例》本文介绍了Pandas中基于整数位置的iloc和基于标签的loc方法进行数据索引和切片的操作,并将大Excel文件拆分合并,具有一定的参考价值,感... 目录一、Pandas 进行索引和切编程片的iloc、loc方法二、Pandas批量拆分与合并Exce

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5

Java轻松实现在Excel中插入、提取或删除文本框

《Java轻松实现在Excel中插入、提取或删除文本框》在日常的Java开发中,我们经常需要与Excel文件打交道,当涉及到Excel中的文本框时,许多开发者可能会感到棘手,下面我们就来看看如何使用J... 目录Java操作Excel文本框的实战指南1. 插入Excel文本框2. 提取Excel文本框内容3

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进