2017-04-19 1 views
2

예를 들어, 열에 나타나는 "johns"의 수를 계산하려고하지만 열에는 이름과 성이 모두 있으며 그성에 관계없이 모든 johns를 계산하려고합니다. 나는 그러나 작동하지 않습니다 아래의 코드를 사용하고기준을 문자열 리터럴의 일부로 사용하는 countif 함수를 사용하는 방법은 무엇입니까?

는 :

Range("A199").Value = WorksheetFunction.CountIf(Range("A1", Range("A1").End(xlDown)), Cells.Find(What:="John ")) 

답변

1

@ YowE3K가 주석을 달았으므로 "=" & "John*")을 사용하는 이유가 있습니다. 그것은 하드 코딩 된 "John"대신 미래에 변수를 사용하기위한 준비입니다. 당신은 VBA 솔루션을 사용하려면

, 당신은 사용할 수 있습니다

Range("A199").Value = WorksheetFunction.CountIf(Range("A1", Range("A1").End(xlDown)), "=" & "John*") 

을 또는 더 나은 아직 :

Const NametoFind As String = "John" 

Range("A199").Value = WorksheetFunction.CountIf(Range("A1", Range("A1").End(xlDown)), "=" & NametoFind & "*") 

을 : Range("A1", Range("A1").End(xlDown))은 지속적인 범위 일 경우에만 (아니라면 것 당신은 당신의 중간에 빈 세포가있다). 다음 공식을 사용하여, 당신 이름 열 후, 여분의 열을 사용하여 하나 개의 권리를하도록 허용하는 경우

+0

' "="& "John *"'? 정말?? 그건 5 키 스트로크를 낭비합니다! 그냥 ""John = "'??!?! (그냥 농담을 했어 - 네가 한 일을 할 좋은 이유가있다. 아니면 더 나은'' "&"John "&"* "'- 하드 코딩 된''John"'을 대신 변수로 대체하는 것이 더 쉽다. .) – YowE3K

+0

@ YowE3K 네가 맞아. 내가 일하는 회의에 참석해야했을 때 대답의 절반 밖에 안됐다. (네가 ** SO **와 일할 때 싫어하지 마라.) –

+1

나는 할 수 없다. 나는 직장 회의가있을 때 정말로 불평한다 - 나는 회사에 매 근무 시간의 적어도 30 분을 제공해야한다고 생각한다. ;) – YowE3K

3

당신은 VBA가 필요하지 않습니다. 와일드 카드를 COUNTIF/COUNTIFS와 함께 사용할 수 있습니다. 기준 "John *"(so, =COUNTIF(A1:A7, "John*"))을 만드십시오.

0

:

=ISNUMBER(SEARCH("JOHN"; A1) 

위의 예는 셀 B1에 있어야합니다. 그런 다음 A 열의 셀에 "JOHN"이라는 이름이 들어 있으면 TRUE이 표시되고 그렇지 않으면 FALSE이 표시됩니다. 그런 다음 카운트를하면됩니다.

=COUNTIF(B:B; TRUE) 

여분의 열을 사용해야하는 경우가 있습니다. 그러나 플러스 측면에서, 그것은 매우 이해할 수 있습니다 (자신과 코드를 읽을 수있는 다른 사람들 모두에게).

관련 문제