2012-06-19 3 views
3

나는 1000 행 15 열의 데이터 시트로 Excel에서 작업하고 있습니다. 현재 열 중 하나에서 사람 이름과 많은 데이터가 섞여 있습니다 (아래 예제 참조). 데이터 시트에 각 사람의 이름이 몇 번 나타나는지보고 싶기 때문에 피벗 테이블에서 사용할 수 있습니다. 이름이 나타나는 방식에는 특별한 형식이나 순서가 없습니다. 그건 무작위 야. 코드를 작성하여 전체 열을 검색하고 각 사람의 이름이 나타나는 시간을 계산할 수있는 방법이 있습니까?Excel에서 열을 검색하여 각 셀에서 문자열이 임의의 특정 문자열을 찾습니다.

Column D 
21421Adam14234 
2323xxx Bob 66 
23 asjdxx Jacob 665 
43 Tim 5935539 
2394Bob 88 

약간의 시행 착오 후, 나는 행에 하나씩 이름의 목록을 생성 할 수 있습니다 그리고 그것은 쉽게 경우, 비교를 위해서 다른 컬럼에 배치합니다.

+0

+ 1 Godd 질문을 참조하십시오이 :)

에 대한 VBA 필요하지 않습니다! –

답변

2

VBA 태그가 없지만이를 사용하지 않고이를 수행 할 수있는 방법이 있는지 모르겠습니다. 아래 사용자 지정 함수를 작성했습니다. 이를 구현하려면 다음 단계를 수행하십시오.

1) 열 E1에서 시작하는 원하는 이름을 나열하십시오.

2) 입력 F1 인 모듈

Option Explicit 

Function findString(rngString As Range, rngSearch As Range) As Long 

Dim cel As Range 
Dim i As Integer 

i = 0 

For Each cel In rngSearch 
    If InStr(1, cel.Text, rngString.Value) > 0 Then 
     cel.offset(,-1) = rngString.Value 'places the name in cell to right of search range 
     i = i + 1 
    End If 
Next 

findString = i 

End Function 

3)이 코드를 복사) 삽입> 메뉴 바 C에서 모듈을 클릭 VBA 편집기 A) Presss Alt + F11 B)에이 기능을 삽입 다음 수식

=findstring(E1,$D$1:$D$5) 

4) 아래의 수식을 실행하여 원하는 각 이름을 계산합니다.

+0

그 해결책은 정확한 결과를 제공했습니다. 감사. – Jonny

+0

추가 요청으로 뇌를 선택할 수 있습니까? 또한 피벗 테이블 이유로 각 열 옆에 이름을 표시하고 싶습니다 (새 열 C를 삽입합니다). – Jonny

+0

내 편집을 참조하십시오. "= findstring (rngString, rngSearch)"함수를 입력하기 전에해야 할 일은 검색 범위의 왼쪽에 빈 열을 넣는 것입니다. –

5

답변을 얻었지만 와일드 카드로 COUNTIF을 사용하지 않는 이유는 무엇입니까? 이 예

=COUNTIF($A$1:$A$5,"*"&C1&"*") 

스냅

enter image description here

+0

+1 나는 이것에 대해 생각하고 있었지만, 오래 전부터 사용 해본 결과 나는 그것을 구현하는 방법을 잊었고 게으르다! 저를 제공하고 상기시켜 줘서 고마워요. –

+0

+1 Countif()를 사용하면 편리합니다! –

관련 문제