我有一个项目,我需要根据两个因素计算值的数量。对于N中的每个单元,其中= EE Only,O = 1列中的相应单元。问题是,对于值为EE + FAM或EE + SP的单元,它们需要计算出现这些值的实例数在" M"的相应值之间在L列中,如图所示。图片显示了输出应该是什么。
如果N列中的值是" EE Only",那么我到目前为止的代码可以放1,如果值是其他值则为2。我不确定如何构建第二组条件来检查L列中的值。我对VBA很新,所以任何帮助都表示赞赏。这是代码。
Sub CountDependents()
Dim DepCount As Long
Dim LastRowConsole As Long
Dim m As Integer
Dim l As Integer
Dim j As Integer
Dim k As Integer
Dim ws As Worksheet
Set ws = Sheets("Audit page")
m = 1
For l = 4 To 15
If Cells(l, "N") <> "EE Only" Then
m = m + 1
End If
Cells(l, "O").Value = m
m = 1
Next l
k = 1
For j = 4 To 15
If Cells(j, "L") = "M" Then
k = k + 1
End If
Cells(j, "O").Value = Cells(j + Cells(j, "O") / 2, "O").Value
j = 1
Next j
End Sub
答案 0 :(得分:1)
如果你想处理名称列,这里有一些简单的代码来处理它。我们的想法是,您使用Range
“构建”Union
,然后在点击“切换”时计算这些单元格。然后,您可以随时随地输出该计数。
在下面的虚拟示例中,我使用的是d
而不是dependent
。我也在名称列旁边输出。您可以修改这些以适合您的应用程序。
Sub CountPeople()
Dim rng_cell As Range
Dim rng_top As Range
Set rng_top = Range("K3")
Dim bool_first As Boolean
bool_first = True
For Each rng_cell In Range(rng_top, rng_top.End(xlDown))
If rng_cell <> "d" And Not bool_first Then
'starting new person, output result from last to top of last person
rng_top.Offset(, 1) = rng_top.Cells.Count
'new top cell is current cell
Set rng_top = rng_cell
Else
'keep growing range if we see a dependent
Set rng_top = Union(rng_top, rng_cell)
End If
bool_first = False
Next
'handle the last person
rng_top.Offset(, 1) = rng_top.Cells.Count
End Sub
结果,请注意输出进入黄色单元格。
代码粗略描述
d
,则继续构建范围d
以外的其他内容,我们需要计算之前的单元格并在隔壁的列中输出计数。d
,但我们要计算它并继续前进)以及将在循环外完成的姓氏。