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

        这种数据真的很难看懂:

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

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

VBA宏方法

        从这里进入宏:

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

        这里可以写宏代码:

        最终的效果如图:        

        参考代码:

模块1:

Global History(1 To 5) As Variant
Global HistoryIndex As IntegerSub SaveCurrentState(ws As Worksheet)HistoryIndex = HistoryIndex Mod 5 + 1History(HistoryIndex) = ws.UsedRange.Value
End SubSub Undo(ws As Worksheet)' 检查是否有历史记录可以撤销If HistoryIndex <= 0 ThenMsgBox "No actions to undo.", vbInformationExit SubEnd If' 检查是否有保存的历史状态If IsEmpty(History(HistoryIndex)) ThenMsgBox "No history state to apply.", vbInformationHistoryIndex = HistoryIndex - 1 ' 减少索引,防止重复警告If HistoryIndex < 0 Then HistoryIndex = 0 ' 确保索引不会变成负数Exit SubEnd If' 应用历史状态ws.UsedRange.Value = History(HistoryIndex)History(HistoryIndex) = Empty ' 清除已经使用的历史记录' 更新历史索引,为下一次撤销做准备HistoryIndex = HistoryIndex - 1If HistoryIndex < 0 Then HistoryIndex = 0 ' 确保索引不会变成负数
End SubSub AutoFitColumns(ws As Worksheet)ws.Cells.EntireColumn.AutoFit
End SubSub CenterAlign(ws As Worksheet)ws.Cells.HorizontalAlignment = xlCenterws.Cells.VerticalAlignment = xlCenter
End SubSub ApplyDataBars(ws As Worksheet)Dim lastCol As IntegerDim lastRow As IntegerDim col As IntegerDim cell As RangelastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).ColumnlastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).RowFor col = 2 To lastColFor Each cell In ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col))If IsEmpty(cell.Value) Then cell.Value = 0Next cellWith ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col)).FormatConditions.AddDatabarWith .FormatConditions(.FormatConditions.Count).BarColor.Color = RGB(155, 194, 230).BarFillType = xlDataBarFillGradient.Direction = xlContext.ShowValue = TrueEnd WithEnd WithNext col
End SubSub 数据处理工具箱()UserForm1.Show
End Sub

UserForm1:

Private Sub InitializeHistory()Dim i As IntegerFor i = 1 To 5History(i) = EmptyNext iHistoryIndex = 0
End SubPrivate Sub Button_Execute_Click()Call InitializeHistoryDim ws As WorksheetSet ws = ActiveSheetIf CheckBox_AutoWidth.Value = True ThenCall AutoFitColumns(ws)SaveCurrentState ActiveSheetEnd IfIf CheckBox_CenterAlign.Value = True ThenCall CenterAlign(ws)SaveCurrentState ActiveSheetEnd IfIf CheckBox_DataBars.Value = True ThenCall ApplyDataBars(ws)SaveCurrentState ActiveSheetEnd If
End SubPrivate 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.bookworksheet = 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.hqwc.cn/news/339360.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何对制作好的查询进行编辑和导出?

发布者已经创建好了查询&#xff0c;如发现数据有误&#xff0c;想要进行修改&#xff0c;或者想要将收集好的表格进行导出&#xff0c;应该如何操作&#xff1f;本次就来介绍如何使用此功能。 &#x1f4d6;案例&#xff1a;教师荣誉核对系统 在开启可修改列功能的教师荣誉核对…

4S店汽车行业万能通用小程序源码系统:功能强大,集合汽车在线展示+在线预约+贷款计算器......附带完整的搭建教程

在移动互联网高速发展的今天&#xff0c;越来越多的消费者选择通过手机端了解汽车信息、预约试驾、计算贷款等。4S店需要紧跟时代步伐&#xff0c;提供更加便捷、高效的服务。因此&#xff0c;开发一款集合汽车在线展示、在线预约、贷款计算器等多项功能的通用小程序成为市场趋…

Programming Abstractions in C阅读笔记:p242-p245

《Programming Abstractions in C》学习第67天&#xff0c;p242-p245总结&#xff0c;总计4页。 一、技术总结 6.2小结主要讲回溯算法及递归算法在迷宫求解中应用&#xff0c;当然&#xff0c;理解然后用代码实现出来还是有些难度的。不过&#xff0c;这并不影响我们进行下一…

圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

写在前面 ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可 🎄css3圣诞雪人动…

AirServer2024免费手机电脑高清投屏软件

AirServer 是适用于 Mac 和 PC 的先进的屏幕镜像接收器。 它允许您接收 AirPlay 和 Google Cast 流&#xff0c;类似于 Apple TV 或 Chromecast 设备。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器 &#xff0c;是一款十分强大的投屏软件。 它能够通…

二叉树的最近公共祖先(算法村第八关黄金挑战)

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 …

了解SSL证书、APNs证书、Jamf Push Proxy证书

在Jamf Pro内会涉及到SSL证书、APNs证书、Jamf Push Proxy证书&#xff0c;每一个证书都有其各自的作用和有效期&#xff0c;下面我们来详细了解一下。 SSL证书 Jmf Pro需要有效的SSL证书来确保计算机和移动设备是与Jamf Pro服务器通信&#xff0c;而不是冒名顶替的服务器。Jam…

css-文本垂直居中, 左侧border与文字作为导航标题

1.文本垂直居中 1.1 Flexbox 布局 <!DOCTYPE html> <html lang"en"> <head><style>.container {display: flex;align-items: center; /* 使用 align-items 属性垂直居中 */height: 200px; /* 设置容器高度 */border: 1px solid #ccc;}</…

深度学习目标跟踪简述

深度学习目标跟踪是一个活跃的研究领域&#xff0c;它涉及使用深度学习技术来跟踪视频或实时摄像头中的对象。这个领域通常包括以下几个关键方面&#xff1a; 目标检测&#xff1a;在开始跟踪前&#xff0c;首先需要在视频的初始帧中检测到目标。这通常是通过卷积神经网络&…

【SpringMVC快速使用】1.@RestController @RequestMapping 2.logback的使用

背景&#xff1a;为何从这个最简单的 例子写起呢&#xff1f; 那是因为我们的管理后台之类的都是别人写的&#xff0c;我也听说了大家说&#xff1a;只用Post请求就足够了&#xff0c;但是却发现&#xff0c;在浏览器中测试时&#xff0c;默认是GET请求&#xff0c;如果直接写…

C++内存管理机制(侯捷)笔记1

C内存管理机制&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youtube: 侯捷-C内存管理机制 Github课程视频、PPT和源代码: https://github.com/ZachL1/Bilibili-plus 第一讲primitives的笔记 截至…

十二、QProgressBar的简单使用与样式优化(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 五、扩展(自定义QProgressBar样式) 一、设计需求 在很多应用程序中&#xff0c;在执行费时操作时都会展示一个进度条来展示操作进行的进度。常见的场景&#xff0c;如&#xff1a;拷贝操作、安装操作以及卸载操作。…