这是我的情况:
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
如果您对第一个代码有答案,我也会接受它....
答案 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;)仅用于说明目的 - 您可以使用无论你喜欢什么。