gpt4 book ai didi

excel - VBA - 通过匹配列和行值来设置范围

转载 作者:行者123 更新时间:2023-12-04 20:30:46 34 4
gpt4 key购买 nike

我对 VBA 很陌生,经过大量搜索后,我无法找到以下问题的任何帮助。

我有一个相当大且复杂的表,其中包含大量数据。表中的数据已被条件格式化为具有不同的颜色填充。使用以下代码,我可以计算每个范围内某种颜色的单元格的数量。

但是,我希望将范围替换为例如以下内容;如果 C 列的值与“Apples”匹配,并且如果第 3 行的值与“农场 A”匹配,则计算该区域内的绿色填充。

到目前为止我使用的代码如下。

Dim rng As Range
Dim lColorCounter As Long
Dim rngCell As Range

Sheets("Matrix").Select
Set rng = Sheet1.Range("F140:O150")
For Each rngCell In rng
If Cells(rngCell.Row, rngCell.Column).DisplayFormat.Interior.Color = RGB(185, 255, 185) Then
lColorCounter = lColorCounter + 1
End If
Next
Sheets("Summary").Activate
Sheet3.Range("C4") = lColorCounter
lColorCounter = 0

希望这是有道理的,任何帮助都将不胜感激。谢谢!

最佳答案

正如评论中所讨论的,这有一个动态行循环(检查 Apples 的值)和一个动态列循环(检查 颜色 的单元格)。

第二个循环的范围由合并单元格(“农场 A”)的大小决定,该单元格从单元格 C2 开始。 .所以如果你改变你的Farm A合并单元格以跨越 20 列,循环将扩展到这 20 列。

Option Explicit

Sub test()

Dim i As Long, FarmA As Integer, MyCell As Range, lColorCounter As Long
Dim Matrix As Worksheet: Set Matrix = ThisWorkbook.Sheets("Matrix")

Application.ScreenUpdating = False
With Matrix
FarmA = .Range("C2").CurrentRegion.Count + 2 'Determine size of merged cell "FarmA"
For i = 3 To .Range("B" & .Rows.Count).End(xlUp).Row 'Loop through used rows in Col B
If .Range("B" & i) = "Apples" Then 'If condition is met, move to next line, else, check next row
For Each MyCell In .Range(.Cells(i, 3), .Cells(i, FarmA)) 'set serach range
If MyCell.DisplayFormat.Interior.Color = RGB(185, 255, 185) Then 'search for format
lColorCounter = lColorCounter + 1
End If
Next MyCell
End If
Next i
End With
Application.ScreenUpdating = True

MsgBox lColorCounter

End Sub

关于excel - VBA - 通过匹配列和行值来设置范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363254/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com