VBA - 如果B列中的单元格不为空白,则列A = 1

时间:2017-03-07 17:35:42

标签: excel vba excel-vba

这是我的情况:

A列是空的。 B列是客人的房间号 C列是该会议室中访客的姓名

我正在计算占用了多少房间。所以我把计数公式但结果是0.我不知道为什么......

以下是代码:

Sheets("Champagne").Select
Range("B2").AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
LastRow = Range("A2").End(xlDown).Row
Cells(LastRow + 2, "A").Formula = "=SUM(A2:A" & LastRow & ")"
LRowA = [A4200].End(xlUp).Address
Range("A:A").Interior.ColorIndex = xlNone
Range("A2:" & LRowA).Interior.ColorIndex = 33
Range("A:A").HorizontalAlignment = xlCenter

所以我试图用一个公式来说明如果B列为任何数字(房间号),它将在A列中计为1。然后在A列的末尾加上一个Sum。

这是我试图提供的代码,但它将123456放在C列中。

Sheets("Champagne").Select

For Each Cel In Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
If Cel.Value <> "" Then Cel.Offset(1, 0).Value = "123456"
Range("A2").AutoFill Destination:=Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row)
LastRow = Range("A2").End(xlDown).Row
Next

Range("B2").AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
LastRow = Range("A2").End(xlDown).Row
Cells(LastRow + 2, "A").Formula = "=SUM(A2:A" & LastRow & ")"
LRowA = [A4200].End(xlUp).Address
Range("A:A").Interior.ColorIndex = xlNone
Range("A2:" & LRowA).Interior.ColorIndex = 33
Range("A:A").HorizontalAlignment = xlCenter

如果您对第一个代码有答案,我也会接受它....

1 个答案:

答案 0 :(得分:1)

要计算占用多少房间(B列),我会使用以下代码:

Function CountOccupiedRooms(sheetname As String) As Long
    Dim j As Long
    dim c As Range
    With Worksheets(sheetname)
        'Check that some data exists
        If IsEmpty(.Range("B2").Value) Then
            CountOccupiedRooms = 0
            Exit Function
        End If

        For Each c In .Range("B2", .Cells(.Rows.Count, "B").End(xlUp))
            If Application.WorksheetFunction.CountIf(.Range("B2:B" & c.Row), c.Value) = 1 Then
                j = j + 1
            End If
        Next
    End With
    CountOccupiedRooms = j
End Function

然后,假设您想将该数字放在某个单元格的某个单元格中,该代码可以在主代码中调用

Worksheets("Summary").Range("C5").Value = CountOccupiedRooms("Champagne")
Worksheets("Summary").Range("C6").Value = CountOccupiedRooms("ChocoStrawb")

目标工作表名称(&#34;摘要&#34;)和位置(&#34; C5&#34;和&#34; C6&#34;)仅用于说明目的 - 您可以使用无论你喜欢什么。