大语言模型解放生产力

在Excel中想实现一个功能,将 G 列中每个合并单元格对应的 L 列数据进行求和,并将结果放在 M 列中。公式肯定是搞不定了,想着VBA应该可以。经过与 Kimi 数十个回合的交流,居然真的写成了!我没学过 VBA,但是根据一些通用编程知识,我又让 Kimi 把代码做得更通用一些,放在这里备用。

Sub CalculateSumsInMergedCells()
    Dim ws As Worksheet
    Dim columnLetter As String
    Dim resultColumnLetter As String
    Dim dataColumnLetter As String
    Dim cell As Range
    Dim sum As Double
    Dim cellValue As Variant

    Set ws = ActiveSheet
    columnLetter = "G" ' 定义要处理的列,可以更改为 "A", "B", "C" 等
    resultColumnLetter = "M" ' 定义结果要输出的列,可以更改为其他列
    dataColumnLetter = "L" ' 定义包含数据的列,可以更改为其他列

    ' 清除结果列已有的数据并拆分合并的单元格
    'ws.Range(resultColumnLetter & ":" & resultColumnLetter).ClearContents
    ws.Range(resultColumnLetter & ":" & resultColumnLetter).UnMerge

    ' 遍历指定列中的所有单元格
    For Each cell In ws.Range(columnLetter & "1:" & columnLetter & ws.Cells(ws.Rows.Count, columnLetter).End(xlUp).Row)
        ' 初始化求和变量
        sum = 0

        ' 检查单元格是否是合并单元格的一部分
        If cell.MergeCells Then
            If cell.Address = cell.MergeArea.Cells(1, 1).Address Then
                ' 计算合并区域中数据列的数据总和
                Dim mergedCell As Range
                For Each mergedCell In cell.MergeArea
                    cellValue = ws.Cells(mergedCell.Row, Columns(dataColumnLetter).Column).Value
                    If IsNumeric(cellValue) Then
                        sum = sum + Val(cellValue)
                    End If
                Next mergedCell

                ' 将计算结果放在结果列的相应位置
                ws.Cells(cell.Row, Columns(resultColumnLetter).Column).Value = sum

                ' 合并结果列的单元格
                ws.Range(ws.Cells(cell.Row, Columns(resultColumnLetter).Column), ws.Cells(cell.MergeArea.Rows(cell.MergeArea.Rows.Count).Row, Columns(resultColumnLetter).Column)).Merge
            End If
        Else
            ' 对于未合并的单元格,直接计算和赋值
            cellValue = ws.Cells(cell.Row, Columns(dataColumnLetter).Column).Value
            If IsNumeric(cellValue) Then
                sum = Val(cellValue)
                ws.Cells(cell.Row, Columns(resultColumnLetter).Column).Value = sum
            End If
        End If
    Next cell
End Sub

本文作者: Jing Han
本文链接: https://www.jhanmath.com/?p=574
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇