Range.Value
이 Range.NumberFormat
과 달라서 코드를 실행하는 동안 문제가 발생합니다. 예를 들어, 내 값은 날짜와 시간이며 요일을 테스트하고 싶습니다. 숫자 형식을 Sun-Sat으로 설정할 수 있었지만 CountIf
으로 테스트하는 방법을 모르겠습니다.VBA - CountIf 셀 범위 표시 값이 원하는 값과 같습니다.
Dim rep as Worksheet
Dim day As Range
Dim time As Range
Dim wf As WorksheetFunction
Set rep = Worksheets("Report")
Set day = rep.Range("H1", rep.Range("H1").End(xlDown))
Set time = rep.Range("I1", rep.Range("I1").End(xlDown))
Set wf = WorksheetFunction
With rep
.Columns("H").NumberFormat = "dddd"
.Columns("I").NumberFormat = "AM/PM"
.Range("K1") = "Monday"
.Range("K2") = "Tuesday"
.Range("K3") = "Wednesday"
.Range("K4") = "Thursday"
.Range("K5") = "Friday"
.Range("K6") = "Saturday"
.Range("K7") = "Sunday"
.Range("M1") = "AM"
.Range("M2") = "PM"
.Range("L1") = wf.CountIf(day, "Monday")
.Range("L2") = wf.CountIf(day, "Tuesday")
.Range("L3") = wf.CountIf(day, "Wednesday")
.Range("L4") = wf.CountIf(day, "Thursday")
.Range("L5") = wf.CountIf(day, "Friday")
.Range("L6") = wf.CountIf(day, "Saturday")
.Range("L7") = wf.CountIf(day, "Sunday")
.Range("N1") = wf.CountIf(time, "AM")
.Range("N2") = wf.CountIf(time, "PM")
End With
이것은 내가 지금까지 가지고있는,하지만 그것은 단지 countif
에 대한 해결책에 대해 0을 출력합니다. 미리 감사드립니다.
countif가 하나의 셀이 아니라 다중 셀 범위를 원할 때 루프에 있으면 안됩니다. 'wf.CountIf (day, ...)' –
@ScottCraner - 시도했지만 또한 작동하지 않았다, 위의 해결했습니다. –
또한'.Columns ("H"). NumberFormat = "dddd"'는 데이터를 마스크로 변경하지 않으며 기본 값은 여전히 date입니다. "dddd"와 같은 형식 인'42563 '과 같은 숫자이므로 결코 "월요일"이 될 수 없습니다. numberformat 뒤에 다음을 추가하십시오 :'.Columns ("H : I") .Value = .Columns ("H : I "). 텍스트' –