大语言模型解放生产力2

之前已经在大语言模型解放生产力里用Kimi实现了在Excel中,将 G 列中每个合并单元格对应的 L 列数据进行求和,并将结果放在 M 列中。过了一年了,又在原聊天里继续要求增加功能:对于G列合并的单元格,从上往下每隔一个对所在行填充颜色。经过几轮交流,完美搞定。

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
    Dim mergedArea As Range
    Dim mergeStart As Long
    Dim mergeEnd As Long
    Dim colorIndex As Long
    Dim col As Long
    Dim firstColumn As Long
    Dim lastColumn As Long
    Dim lastRow As Long

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

    ' 获取第一列和最后一列的列号
    firstColumn = 1 ' 第一列
    lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' 最后一列

    ' 清除结果列已有的数据并拆分所有合并的单元格,但保留第一行
    With ws.Range(resultColumnLetter & "2:" & resultColumnLetter & ws.Cells(ws.Rows.Count, resultColumnLetter).End(xlUp).Row)
        .UnMerge
        .ClearContents
    End With

    ' 初始化颜色索引
    colorIndex = 0

    ' 遍历指定列中的所有单元格
    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

                ' 获取合并区域的起始和结束行
                mergeStart = cell.Row
                mergeEnd = cell.MergeArea.Rows(cell.MergeArea.Rows.Count).Row

                ' 根据颜色索引决定是否填充颜色
                If colorIndex = 1 Then
                    ' 填充从第一列到最后一列的相应行
                    For col = firstColumn To lastColumn
                        ws.Range(ws.Cells(mergeStart, col), ws.Cells(mergeEnd, col)).Interior.Color = RGB(255, 255, 0) ' 黄色
                    Next col
                Else
                    ' 清除从第一列到最后一列的相应行的颜色
                    For col = firstColumn To lastColumn
                        ws.Range(ws.Cells(mergeStart, col), ws.Cells(mergeEnd, col)).Interior.colorIndex = xlNone
                    Next col
                End If

                ' 更新颜色索引
                colorIndex = 1 - colorIndex
            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

    ' 为所有单元格添加框线
    lastRow = ws.Cells(ws.Rows.Count, firstColumn).End(xlUp).Row
    With ws.Range(ws.Cells(1, firstColumn), ws.Cells(lastRow, lastColumn)).Borders
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0) ' 黑色
        .Weight = xlThin
    End With
End Sub


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

发送评论 编辑评论


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