记第一次使用Excel进行计算
早就知道Excel强大, 可是始终也没用过什么高级功能. 之前至多是用它来看看SharePoint的ULS日志, 因为Filter功能实在是非常好用.
今天, 在看dump的时候遇到了一个问题, 使用!dumpheap –stat, 在Fragmented blocks larger than 0.5 MB的部分, 看到特别多条记录, 于是就想统计一下这些对象一共占用了多少内存.
问题描述
=================
简化来说, 我从WinDBG的输出中拷贝了类似如下的文字:
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
111a0598 3.8MB 11577fa8 System.String
0d6998e0 5.2MB 0dbc3218 System.String
我如何才能比较方便地获取第二列的所有的数字之和?
解决方案
=================
1. 首先将该段文字存入一个文本文档.
2. 使用Excel的Data Import From Text功能.
3. 得到这样的excel文件
4. 如果B列全是数字就OK了, 可惜有MB挡路. 先去进行了Google找到了一篇文章Extracting numbers from alphanumeric strings. 看了好久, 终于明白了这篇文章中的技巧. 可是该技巧却不适合我这个应用. 因为小数点的问题并没有被考虑到, 所以该解决方案只适用于数字连续的整数.
5. 本来我是不会使用Excel公式的, 看了上面的文章, 就明白了一点, 自己摸索一下, 就解决了我的问题. 其实我面临的问题更加简单, 只需要扣掉后面的MB, 然后再累加即可.
6. 先使用我们需要得到的是B列的一个子串, 该子串从母串的首字母开始, 长度是母串的长度减去2("MB"的长度). 得到了子串后, 需要让其乘1, 以转型为数字. 公式如下:
=1*MID(B1,1,LEN(B1)-2)
7. 接下来使用AutoFill来填满结果列的全部.
8. 得到了数字, 剩下的事情就简单罗, 一个SUM搞定.
参考资料
Extracting numbers from alphanumeric strings
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2010-03-28 WebDAV上传比其他的方式都要慢?
2010-03-28 Web Proxy Autodiscovery Protocol
2010-03-28 把SQL2000的数据库迁移至SQL2005