excel宏处理魔法代码,实现按月份统计销售额和按产品统计销售额

目录

  • 前言
  • 第一步:打开文件
  • 第二步:选中左侧任意一个sheet双击
  • 第三步:粘贴 魔法代码
  • 第四步:点击菜单栏 运行=>运行子程序和用户窗口
  • 第五步:切换回文件,我们就可以看到已经生成了月份销售额统计和产品销售额统计
  • 总结

前言

在日常办公中,我们经常会遇到统计数据的问题。
今天我来给大家介绍,一秒钟生成统计数据的方法。
在这里插入图片描述

第一步:打开文件

在这里插入图片描述

按ALT + F11 打开Excel的VBA编辑器
在这里插入图片描述

第二步:选中左侧任意一个sheet双击

在这里插入图片描述

第三步:粘贴 魔法代码

Sub ProcessSalesData()
    Dim ws As Worksheet
    Dim summaryWs As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim monthSales As Object
    Dim productSales As Object
    Dim dateKey As String
    Dim product As String
    Dim summaryRow As Long
    Dim key As Variant

    ' 设置原始数据工作表为第一个工作表
    Set ws = ThisWorkbook.Sheets(1)
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 删除空行
    For i = lastRow To 2 Step -1
        If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
            ws.Rows(i).Delete
        End If
    Next i

    ' 格式化日期
    For i = 2 To lastRow
        If IsDate(ws.Cells(i, 1).Value) Then
            ws.Cells(i, 1).NumberFormat = "yyyy-mm-dd"
        End If
    Next i

    ' 创建汇总工作表
    On Error Resume Next
    Set summaryWs = ThisWorkbook.Sheets("销售额统计")
    On Error GoTo 0
    If summaryWs Is Nothing Then
        Set summaryWs = ThisWorkbook.Sheets.Add(After:=ws)
        summaryWs.Name = "销售额统计"
    Else
        summaryWs.Cells.Clear
    End If

    ' 添加汇总表头
    summaryWs.Cells(1, 1).Value = "月份"
    summaryWs.Cells(1, 2).Value = "销售额"
    summaryWs.Cells(1, 4).Value = "产品"
    summaryWs.Cells(1, 5).Value = "销售额"
    summaryRow = 2

    ' 创建字典对象存储每月和每个产品的销售总额
    Set monthSales = CreateObject("Scripting.Dictionary")
    Set productSales = CreateObject("Scripting.Dictionary")

    ' 计算每月和每个产品的总销售额
    For i = 2 To lastRow
        If IsDate(ws.Cells(i, 1).Value) Then
            dateKey = Format(ws.Cells(i, 1).Value, "yyyy-mm")
            If Not monthSales.exists(dateKey) Then
                monthSales.Add dateKey, ws.Cells(i, 3).Value
            Else
                monthSales(dateKey) = monthSales(dateKey) + ws.Cells(i, 3).Value
            End If
        End If
        
        product = ws.Cells(i, 2).Value
        If product <> "" Then
            If Not productSales.exists(product) Then
                productSales.Add product, ws.Cells(i, 3).Value
            Else
                productSales(product) = productSales(product) + ws.Cells(i, 3).Value
            End If
        End If
    Next i

    ' 将每月销售总额写入汇总工作表
    For Each key In monthSales.keys
        summaryWs.Cells(summaryRow, 1).Value = key
        summaryWs.Cells(summaryRow, 2).Value = monthSales(key)
        summaryRow = summaryRow + 1
    Next key

    ' 将产品销售总额写入汇总工作表
    summaryRow = 2
    For Each key In productSales.keys
        summaryWs.Cells(summaryRow, 4).Value = key
        summaryWs.Cells(summaryRow, 5).Value = productSales(key)
        summaryRow = summaryRow + 1
    Next key

    ' 清理
    Set monthSales = Nothing
    Set productSales = Nothing
End Sub

第四步:点击菜单栏 运行=>运行子程序和用户窗口

在这里插入图片描述

第五步:切换回文件,我们就可以看到已经生成了月份销售额统计和产品销售额统计

在这里插入图片描述

总结

以上就是今天要讲的内容,本文介绍excel数据统计,赶紧上手试试吧。
如果觉得有用欢迎点赞,关注
有问题留言我!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/721070.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

72-UDP协议工作原理及实战

#ifndef UDPCOMM_H #define UDPCOMM_H#include <QMainWindow> #include <QUdpSocket> // 用于发送和接收UDP数据报 #include <QtNetwork>QT_BEGIN_NAMESPACE namespace Ui { class udpComm; } QT_END_NAMESPACEclass udpComm : public QMainWindow {Q_OBJECT…

数字孪生引领智慧校园建设新篇章

一、引言 在数字化浪潮的推动下&#xff0c;教育行业正经历着一场深刻的变革。智慧校园作为现代教育的新风向&#xff0c;通过整合先进的信息技术&#xff0c;正在逐步改变传统的教学、管理与服务模式。其中&#xff0c;数字孪生技术以其独特的优势&#xff0c;为智慧校园的建…

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…

VST3音频插件技术介绍

一.概述 1.VST3介绍 VST3&#xff08;Virtual Studio Technology 3&#xff09;是一种音频插件格式&#xff0c;由Steinberg公司开发&#xff0c;用于在数字音频工作站&#xff08;DAW&#xff09;中使用。VST3插件可以是模拟合成器、鼓机、混响器、压缩器等多种类型的音频处理…

AI在医学中神奇应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

零基础入门学用Arduino 第四部分(一)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调…

内部类介绍

内部类&#xff08;Inner Class&#xff09;是在另一个类的内部定义的类。它可以访问外部类的所有成员&#xff0c;包括私有成员。内部类有两种主要形式&#xff1a;局部内部类&#xff08;定义在方法内部&#xff09;和成员内部类&#xff08;定义在类的内部&#xff0c;但不在…

echart在线图表demo下载直接运行

echart 全面的数据可视化图表解决方案 | 折线图、柱状图、饼图、散点图、水球图等各类图表展示 持续更新中 三色带下表题速度仪表盘 地图自定义图标 动态环形图饼状图 动态水波动圆形 多标题指针仪表盘 温度仪表盘带下标题 横向柱状图排名 环形饼状图 双折线趋势变化

Git的3个主要区域

一般来说&#xff0c;日常使用只要记住下图6个命令&#xff0c;就可以了。但是熟练使用&#xff0c;恐怕要记住60&#xff5e;100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace&#xff1a;工作区 Index / Stage&#xff1a;暂存区 Reposito…

学会这几点,轻松制作引人入胜的电子期刊

随着数字化时代的到来&#xff0c;电子期刊已经成为了信息传播的重要载体。它以方便快捷、形式多样、互动性强等特点&#xff0c;受到了广泛的欢迎。那么&#xff0c;如何制作一份引人入胜的电子期刊呢&#xff1f;下面就来为大家分享几点制作电子期刊的小技巧。 1.选择合适的制…

制造业为什么需要ERP企业管理软件?

如今&#xff0c;传统的制造业管理方式逐渐变得力不从心~库存积压、生产效率低下、供应链混乱…想象一下&#xff0c;如果你的企业仍然依赖于手工记录订单、库存和财务数据&#xff0c;那么每当市场发生变动时&#xff0c;你就需要花费大量的时间和精力去重新调整生产计划、更新…

Qt 实战(5)布局管理器 | 5.2、深入解析Qt布局管理器

文章目录 一、深入解析Qt布局管理器1、为什么要使用布局管理器&#xff1f;2、布局管理器类型3、布局管理器用法详解3.1、QBoxLayout&#xff08;垂直与水平布局&#xff09;3.2、QGridLayout&#xff08;网格布局&#xff09;3.3、QFormLayout&#xff08;表单布局&#xff09…

LLM2Vec论文阅读笔记

这是篇LLM论文&#xff0c;用decoder-like的LLM去提取embedding文章认为&#xff0c;decoder-like的LLM在text embedding task表现不优的一大原因就是其casual attention mechanism&#xff0c;其实就是mask的问题。所以只要对现有的decoder-only LLM进行如下三步改进&#xff…

接口联调测试

在我们工作过程中&#xff0c;有时需要一些接口进行联调。接口联调测试&#xff0c;就是按照业务要求&#xff0c;把接口进行组合测试。接口组合起来才能实现完整的业务&#xff0c;体现更大的价值。 接口联调测试业务分析&#xff1a; 原因&#xff1a; 项目中的接口是多个…

【数据结构与算法】最小生成树

文章目录 最小生成树&#xff08;MST&#xff09;定义 构造最小生成树Prim算法Kruskal算法 最小生成树&#xff08;MST&#xff09; 连通图的生成树包含图的所有顶点&#xff0c;并且只含有尽可能少的边。对于生成树来说&#xff0c;若砍去它的一条边&#xff0c;则会使生成树…

DOOPRIME:日本央行7月加息与否取决于数据,购债规模调整无强烈信号

摘要 日本央行行长植田和男近日在议会发言中表示&#xff0c;7月份是否加息将取决于经济数据表现&#xff0c;而购买日本国债与加息是两个独立的问题&#xff0c;不会通过削减购债规模来释放强烈的政策信号。这一表态引发了市场的广泛关注&#xff0c;投资者和经济学家对此进行…

【elementui源码解析】如何实现自动渲染md文档-第四篇

目录 1.前言 2.md-loader - index.js 1&#xff09;md.render() 2&#xff09;定义变量 3&#xff09;while stripTemplate stripScript genInlineComponentText 4&#xff09;pageScript 5&#xff09;return 6&#xff09;demo-block 3.总结 所有章节&#x…

MyBatis逆向工程和MyBatisX插件的使用

文章目录 1.ORM思维2.逆向工程3.MyBatisX插件的使用 1.ORM思维 ORM&#xff08;Object-Relational Mapping&#xff0c;对象-关系映射&#xff09;是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。它将对象和关系数据库的概念进行映射&#xff0c;最后我们就可以…

发生了什么?法国市值蒸发超1.8万亿元

KlipC报道&#xff1a;一周前&#xff0c;法国总统马克龙意外宣布提前举行国会议员选举&#xff0c;引发了法国政坛遭受巨震。仅仅一周内&#xff0c;法国股市遭受重大打击&#xff0c;其市值蒸发了约2580亿美元&#xff08;约1.8万亿人民币&#xff09;。 多家大型金融机构多…