VBA计算列中的值并在另一个表中填充表

时间:2017-06-28 14:37:06

标签: excel vba excel-vba

我有两张表,即sheet1和sheet2。

我有一张表,其中包括周,延迟,确定,延迟和百分比。

在表1中,我正在寻找列T,并计算' 1'在专栏中。同样地,我查找列U并计算' 0'在专栏中。

必须在查看周的表格的sheet2中填写Count值。我在sheet1的AX列中有我的一周。

我使用像Countif这样的公式来计算列中的1的数量。 有人可以指导我如何在VBA中执行此操作,计算列中的值并将结果粘贴到另一个表中的表中。我很惊讶如何从编码开始。这是我的sheet1,我必须在列t和u中计算1的数量 resembels sheet1 , where I Need to Count the 1's in column T and U. checking the week.

sheet2, where the Count value has to be entered in the table according to the week and calculate its percentage

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行中。您可以通过更改注释中指示的代码来更改此项。