【教程】通过Excel宏/Pandas两种方法来自动添加渐变数据条

news2025/1/12 5:56:27

        这种数据真的很难看懂:

        一般会对其画折线图或者数据条,相比起来就非常直观:

        但是每一列都要手动这样设置就非常累了,所以这里就用到了VBA宏(或者Pandas)

VBA宏方法

        从这里进入宏:

        随便写一个宏名后点创建:

        这里可以写宏代码:

        最终的效果如图:        

        参考代码:

模块1:

Global History(1 To 5) As Variant
Global HistoryIndex As Integer

Sub SaveCurrentState(ws As Worksheet)
    HistoryIndex = HistoryIndex Mod 5 + 1
    History(HistoryIndex) = ws.UsedRange.Value
End Sub

Sub Undo(ws As Worksheet)
    ' 检查是否有历史记录可以撤销
    If HistoryIndex <= 0 Then
        MsgBox "No actions to undo.", vbInformation
        Exit Sub
    End If

    ' 检查是否有保存的历史状态
    If IsEmpty(History(HistoryIndex)) Then
        MsgBox "No history state to apply.", vbInformation
        HistoryIndex = HistoryIndex - 1 ' 减少索引,防止重复警告
        If HistoryIndex < 0 Then HistoryIndex = 0 ' 确保索引不会变成负数
        Exit Sub
    End If

    ' 应用历史状态
    ws.UsedRange.Value = History(HistoryIndex)
    History(HistoryIndex) = Empty ' 清除已经使用的历史记录

    ' 更新历史索引,为下一次撤销做准备
    HistoryIndex = HistoryIndex - 1
    If HistoryIndex < 0 Then HistoryIndex = 0 ' 确保索引不会变成负数
End Sub


Sub AutoFitColumns(ws As Worksheet)
    ws.Cells.EntireColumn.AutoFit
End Sub

Sub CenterAlign(ws As Worksheet)
    ws.Cells.HorizontalAlignment = xlCenter
    ws.Cells.VerticalAlignment = xlCenter
End Sub

Sub ApplyDataBars(ws As Worksheet)
    Dim lastCol As Integer
    Dim lastRow As Integer
    Dim col As Integer
    Dim cell As Range

    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For col = 2 To lastCol
        For Each cell In ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col))
            If IsEmpty(cell.Value) Then cell.Value = 0
        Next cell

        With ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col))
            .FormatConditions.AddDatabar
            With .FormatConditions(.FormatConditions.Count)
                .BarColor.Color = RGB(155, 194, 230)
                .BarFillType = xlDataBarFillGradient
                .Direction = xlContext
                .ShowValue = True
            End With
        End With
    Next col
End Sub


Sub 数据处理工具箱()
    UserForm1.Show
End Sub

UserForm1:

Private Sub InitializeHistory()
    Dim i As Integer
    For i = 1 To 5
        History(i) = Empty
    Next i
    HistoryIndex = 0
End Sub

Private Sub Button_Execute_Click()
    Call InitializeHistory
    Dim ws As Worksheet
    Set ws = ActiveSheet

    If CheckBox_AutoWidth.Value = True Then
        Call AutoFitColumns(ws)
        SaveCurrentState ActiveSheet
    End If

    If CheckBox_CenterAlign.Value = True Then
        Call CenterAlign(ws)
        SaveCurrentState ActiveSheet
    End If

    If CheckBox_DataBars.Value = True Then
        Call ApplyDataBars(ws)
        SaveCurrentState ActiveSheet
    End If
End Sub

Private Sub Button_Undo_Click()
    Undo ActiveSheet
End Sub

        最后,导出模块,以便共享:

Pandas方法

        参考代码:

excel_file = f'dataset_statistics_{use_model}.xlsx'
with pd.ExcelWriter(excel_file, engine='xlsxwriter') as writer:
    df.to_excel(writer, index=True, sheet_name='Sheet1')
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']

    for idx, col in enumerate(df.columns):
        col_max_width = max(df[col].astype(str).str.len().max(), len(col))
        worksheet.set_column(idx, idx, col_max_width)

    for col_num in range(1, len(df.columns)):
        worksheet.conditional_format(1, col_num, len(df), col_num, 
                                     {'type': 'data_bar',
                                      'bar_color': '#A9CCE3',
                                      'data_bar_2010': True})

        效果如图:

        比较粗糙,需要精调,没有上面VBA宏的结果好看。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Triumphcore FPGA调测试记录

FPGA采用Xilinx pynq Z2开发板。基于V2.5版本开发 OverView uart端口映射 BUG调试记录 2024.1.7 复位状态导致取指时序错误 错误波形&#xff1a; 正确波形 问题代码&#xff1a; 2024.1.9 clock_wizard设置输入时钟是输出时钟的2^n倍&#xff0c;输出时钟的占空比才…

实战(CVE-2023-42442)JumpServer未授权访问漏洞

声明&#xff1a; 该文章仅供网络安全领域的学习使用&#xff0c;请勿利用文章内的相关技术从事任何非法行为。 知攻善防&#xff0c;遇强则强。 开发和安全缺一不可&#xff01; 目录 一、知识介绍 1、堡垒机&#xff08;跳板机&#xff09; 2、Jumpserver 二、漏洞介绍 三…

本地远程实时获取无人机采集视频图像(天空端 + jetson nano + 检测分割 + 回传地面端显示)

1、无线图传设备介绍 2、jetson nano天空端数据采集检测保存 3、本地回传显示 1、无线图传设备介绍 由于本设计考虑将无人机得到检测结果实时回传给地面站显示&#xff0c;因此需要考虑一个远程无线通信设备进行传输。本设计采用思翼HM30图传设备。通过无线图传的wifi将天空端…

Linux——firewalld防火墙(二)

一、firewalld高级配置 1、IP地址伪装 地址伪装&#xff08;masquerade):通过地址伪装&#xff0c;NAT设备将经过设备的包转发到指定接收方&#xff0c;同时将通过的数据包的源地址更改为其自己的接口地址。当返回的数据包到达时&#xff0c;会将目的地址修改为原始主机的地址…

HDFS相关API操作

文章目录 API文档环境配置API操作准备工作创建文件夹文件上传文件下载文件删除文件的更名和移动获取文件详细信息 API文档 HDFS API官方文档&#xff1a;https://hadoop.apache.org/docs/r3.3.1/api/index.html 环境配置 将Hadoop的Jar包解压到非中文路径&#xff08;例如D:…

阿里云实时计算企业级状态存储引擎 Gemini 技术解读

本文整理自阿里云 Flink 存储引擎团队李晋忠&#xff0c;兰兆千&#xff0c;梅源关于阿里云实时计算企业级状态存储引擎 Gemini 的研究&#xff0c;内容主要分为以下五部分&#xff1a; 流计算状态访问的痛点企业级状态存储引擎GeminiGemini 性能评测&线上表现结语参考 一、…

手机直连卫星及NTN简介

一、手机直连卫星的发展现状 近日&#xff0c;华为推出了支持北斗卫星短报文的Mate 50旗舰机、P60系列&#xff0c;苹果也跟Globalstar&#xff08;全球星&#xff09;合作推出了支持卫星求救的iPhone14&#xff0c;最亮眼的还是华为的。这几款产品揭开了卫星通信探索消费领域…

JAVA基础学习笔记-day16-网络编程

JAVA基础学习笔记-day16-网络编程 1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一&#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二&#xff1a;端口号2.4 通信要素三&#xff1a;网络通信协议 3. 谈…

点割集、边割集

点割集&#xff1a;对图G来说删去点割集的真子集&#xff0c;依旧连通。也就是说&#xff0c;点割集是删去使得图从连通变成非连通的最小节点的集合。 边割集&#xff1a;对图G来说删去边割集的真子集&#xff0c;依旧连通。也就是说&#xff0c;点割集是删去使得图从连通变成…

【小白专用】C# 连接 MySQL 数据库

C# – Mysql 数据库连接 1. 配置环境 #前提&#xff1a;电脑已安装Mysql服务&#xff1b; Visual Studio 安装Mysql依赖库&#xff1a; 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet程序包 —> 搜索&#xff0c; 安装Mysql.Data (Oracle); (安装成功后&…

建立四叉树[中等]

一、题目 给你一个n * n矩阵grid&#xff0c;矩阵由若干0和1组成。请你用四叉树表示该矩阵grid。你需要返回能表示矩阵grid的四叉树的根结点。四叉树数据结构中&#xff0c;每个内部节点只有四个子节点。此外&#xff0c;每个节点都有两个属性&#xff1a; 【1】val&#xff1…

阿里云c8i服务器CPU性能、架构及费用测评

阿里云第八代云服务器ECS计算型c8i实例&#xff0c;CPU采用Intel Xeon Emerald Rapids或者Intel Xeon Sapphire Rapids&#xff0c;主频不低于2.7 GHz&#xff0c;全核睿频3.2&#xff0c;阿里云百科aliyunbaike.com分享阿里云c8i服务器CPU处理器型号、存储、网络、安全、使用场…

网络协议与攻击模拟_03实施ARP欺骗和攻击

一、ARP攻击 1、实验环境 kali Linux &#xff08;安装arpspoof工具&#xff09;被攻击主机 2、kali配置 kali Linux系统是基于debian Linux系统&#xff0c;采用deb包管理方式&#xff0c;可以使用apt源的方式进行直接从源的安装。 配置kali网络源 vim /etc/apt/sources…

(树木/道路/建筑)点云实验数据,包括pcd,ply,las,txt格式

&#xff08;树木/道路/建筑&#xff09;点云实验数据&#xff0c;包括pcd,ply,las,txt格式 一、介绍1.下载&#xff08;百度网盘&#xff09; 一、介绍 因为一直有朋友问数据&#xff0c;其实有很多的公开数据集可以使用&#xff0c;可能刚开始学习不习惯找吧&#xff0c;所以…

冲刺2024年AMC8模拟题:往年真题限时练一练和答案详解(4)

今天距离2024年AMC8正式比赛还有一周时间了&#xff0c;很多城市的中小学已经基本上放假了&#xff0c;所以参加AMC8竞赛的同学&#xff0c;可以在将更多的时间用在冲刺AMC8竞赛备考了&#xff0c;寒假作业的时间接下来几天可以少一点&#xff0c;AMC8结束后可以再多一点。 今…

Python办公自动化 – 操作NoSQL数据库和自动化图像识别

Python办公自动化 – 操作NoSQL数据库和自动化图像识别 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动…

CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路

参考资料&#xff1a; CentOS 7 制作openssl 1.1.1w 版本rpm包 —— 筑梦之路_centos7 openssl 1.1.1 rpm包-CSDN博客 直接上spec文件如下&#xff1a; Name: openssl Version: 1.1.1w Release: 1%{?dist} Summary: Utilities from the general purpose cryptography li…

科学和统计分析软件GraphPad Prism mac介绍说明

GraphPad Prism for Mac是一款科学和统计分析软件&#xff0c;旨在帮助研究者、科学家和学生更轻松地处理和可视化数据。 GraphPad Prism for Mac是一款功能强大、易于使用的科学和统计分析软件&#xff0c;适用于各种类型的数据处理和可视化需求。无论您是进行基础研究、临床试…

112.Qt中的窗口类

我们在通过Qt向导窗口基于窗口的应用程序的项目过程中倒数第二步让我们选择跟随项目创建的第一个窗口的基类, 下拉菜单中有三个选项, 分别为: QMainWindow、QDialog、QWidget如下图&#xff1a; 常用的窗口类有3个 在创建Qt窗口的时候, 需要让自己的窗口类继承上述三个窗口类的…

Hive基础题-1

别看我&#xff0c;不看答案我也不会写 正因为不会写&#xff0c;所以才要每天一练 本地hive练习题 SET hive.exec.mode.local.autotrue; -- 默认 false SET hive.exec.mode.local.auto.inputbytes.max50000000; SET hive.exec.mode.local.auto.input.files.max5; -- 默认 4# …