我有两张表,即sheet1和sheet2。
我有一张表,其中包括周,延迟,确定,延迟和百分比。
在表1中,我正在寻找列T,并计算' 1'在专栏中。同样地,我查找列U并计算' 0'在专栏中。
必须在查看周的表格的sheet2中填写Count值。我在sheet1的AX列中有我的一周。
我使用像Countif这样的公式来计算列中的1的数量。 有人可以指导我如何在VBA中执行此操作,计算列中的值并将结果粘贴到另一个表中的表中。我很惊讶如何从编码开始。这是我的sheet1,我必须在列t和u中计算1的数量
答案 0 :(得分:1)
要解决这个问题,我们必须使用几个循环。首先,我们必须做一个外循环来遍历sheet2中的周数,然后嵌入到该循环中我们必须查看sheet1中的每一行以查看它是否与sheet2中的周匹配并查看列T = 1和如果列U = 0.代码创建一个计数器,每当T中的一行等于1时将T增加1,并且每当U = 0中的一行时对U进行相同的操作。
Sub test()
Dim col As Range
Dim row As Range
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim T As Integer
Dim U As Integer
Dim wk As String
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
For Each col In sh2.Columns 'This loops through all populated columns in row one
If sh2.Cells(1, col.Column).Value = "" Then
Exit For
End If
wk = sh2.Cells(1, col.Column).Value
For Each rw In sh1.Rows
If sh1.Cells(rw.row, 50).Value = "" Then
Exit For
End If
If sh1.Cells(rw.row, 50) = wk And sh1.Cells(rw.row, 20) = 1 Then
T = T + 1
End If
If sh1.Cells(rw.row, 50) = wk And sh1.Cells(rw.row, 21) = 0 Then
U = U + 1
End If
Next rw
sh2.Cells(2, col.Column) = T 'put counters into 2nd and 3rd row under each week, you can adjust this to put the number in a different cell.
sh2.Cells(3, col.Column) = U
T = 0 'reset counters to start looking at next week.
U = 0
Next col
End Sub
出于某种原因,我无法查看您刚刚上传的图片。您可能必须调整我的代码以适应您的Excel文件的细节。对你来说这将是一个很好的VBA练习。我的代码假设sheet2具有跨越列的周数,而它们之间没有任何空白单元格。 vba将代码放在相应周数下的第2行和第3行中。您可以通过更改注释中指示的代码来更改此项。