根据表格背景色统计表格数量

         在利用EXCEL表格制作一些平面直观图时,会根据每个不同类型的物品添加背景色而加以区分,需要对不同颜色的表格数进行计数,为方便引申至相同的图表,在此使用宏程序和相关函数加以解决。

        以数据中心的标准机柜的平面直观图为例,图示为机柜正视图。交换机背景色为蓝色,个性色5,淡色60%;服务器背景色为绿色,个性色6,淡色60%。

示例1

1.使用宏程序定义求和颜色表格函数

        我们在EXCEL顶部属性栏,打开开发工具选项,在Visual Basic中编辑宏程序:   

Option Explicit

'统计相同颜色表格的数量
Function SUMColor(rag1 As Range, rag2 As Range)

Dim i

Application.Volatile

    For Each i In rag2
    
    If i.Interior.ColorIndex = rag1.Interior.ColorIndex Then
    
    SUMColor = SUMColor + 1
    
    End If

Next

End Function

VBA语言相关请参阅微软官方文档:

Visual Basic for Applications (VBA) 语言参考 | Microsoft Docsicon-default.png?t=L892https://docs.microsoft.com/zh-cn/office/vba/api/overview/language-reference

2.在表格中引用SUMcolor方法

      在SUMcolor(参数1,参数2)方法中,参数1代表表格背景色示例(即要统计的表格背景色要与所选位置的表格背景色一致),参数2代表所要统计区域。

如示例1

        网络设备的数量即为:=SUMColor(D49,B3:D48)/2

        注:统计网络设备的前提是此设备在图示中只占1行,由于此方法统计的是表格合并之前的小表格数,故应除以合并的列数。

        服务器的数量即为:=(COUNTIF(C3:D48,"*")-SUMColor(D49,B3:D48)/2)

        注:服务器的数量=总设备数量-网络设备的数量;

        COUNTIF函数

        COUNTIF 是一个统计函数,用于统计满足某个条件的单元格的数量;

        COUNTIF 的最简形式为:=COUNTIF(要检查哪些区域? 要查找哪些内容?)

=COUNTIF(C3:D48,"*"),统计单元格C3 到D48 中包含任何文本的单元格的数量。 通配符星号 (*) 用于匹配任意字符。

        已占U数为:=(SUMColor(D49,C3:D48)+SUMColor(D50,C3:D48))/2

        注:即为所选区域两种颜色所占表格数(合并之后的表格按合并之前的小表格计算)

3.根据背景色统计表格的相关问题

        一、上述解决问题的方法为最笨的方式,暂无法找出解决问题的最简单的方式,如有其他方式还请指导。

        二、如何对合并之后的表格进行计数,为什么用此函数统计的是合并之前所占的小表格的数量,该用什么样的约束条件来进行统计。

        三、如何求有背景色的表格所占的行数,前述使用的是两种背景色的表格数之和,此方法复杂,在遇到更多种背景色表格统计时,公式会更加繁琐冗余。


好的,这个问题需要结合 HTML、CSS 和 JavaScript 来实现。我会分步骤给出代码实现,你可以在本地运行查看效果。 1. 制作表格 ```html <table id="mytable"> <thead> <tr> <th><input type="checkbox" id="check-all"></th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox" class="check-item"></td> <td>小明</td> <td>18</td> <td>男</td> <td><button class="delete-btn">删除</button></td> </tr> <tr> <td><input type="checkbox" class="check-item"></td> <td>小红</td> <td>20</td> <td>女</td> <td><button class="delete-btn">删除</button></td> </tr> <tr> <td><input type="checkbox" class="check-item"></td> <td>小张</td> <td>22</td> <td>男</td> <td><button class="delete-btn">删除</button></td> </tr> </tbody> </table> ``` 这里我们使用了 `table` 标签来制作表格,其中包含了表头和表身两部分。表头中有一个全选的复选框,每行的表身中有一个复选框和一个删除按钮。为了方便操作,我们为全选复选框和每个复选框都添加了 `id` 或 `class`。 2. 全选和取消全选 ```javascript var checkAll = document.getElementById("check-all"); var checkItems = document.getElementsByClassName("check-item"); checkAll.addEventListener("click", function() { for (var i = 0; i < checkItems.length; i++) { checkItems[i].checked = this.checked; } }); for (var i = 0; i < checkItems.length; i++) { checkItems[i].addEventListener("click", function() { var checkedCount = document.querySelectorAll(".check-item:checked").length; checkAll.checked = checkedCount === checkItems.length; }); } ``` 这里我们通过 JavaScript 获取到全选复选框和每个复选框,并为其添加了 `click` 事件。当点击全选复选框时,我们遍历每个复选框,将其选中状态设为全选复选框的选中状态。当点击每个复选框时,我们统计当前被选中的复选框数量,如果数量与总数量相等,则将全选复选框设为选中状态。 3. 改变表格背景色 ```css table:hover { background-color: #f5f5f5; } ``` 这里我们使用 CSS 的 `:hover` 伪类为表格添加鼠标移入时的背景色。 4. 删除操作 ```javascript var deleteBtns = document.getElementsByClassName("delete-btn"); for (var i = 0; i < deleteBtns.length; i++) { deleteBtns[i].addEventListener("click", function() { var row = this.parentNode.parentNode; var checkItem = row.querySelector(".check-item"); if (checkItem.checked || confirm("确定删除该行吗?")) { row.parentNode.removeChild(row); } else { return false; } }); } ``` 这里我们为每个删除按钮添加了 `click` 事件。当点击删除按钮时,我们获取到该行的节点 `row` 和对应的复选框 `checkItem`,判断复选框是否被选中,如果被选中或者用户确认删除,则将该行从表格中删除。如果复选框未被选中,则提示用户进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值