비디오: NetWorker: How to Use the NetWorker Bigasm Directive 2024
전체 이름이 모두있는 이름의 Excel 워크 시트를받은 적이 있습니까? 세포? 당신의 임무는 이름을 성, 성으로 분해하는 것인데, 파싱이라고 알려진 과정입니다. 수식 및 / 또는 함수를 사용하여 도움을 받거나 VBA (Visual Basic for Applications) 코드를 사용할 수 있습니다.
일반적인 접근법은 이름과 성 사이의 공간을 찾는 것입니다. - 이름이 어디에서 끝나고 성이 시작되는지 알 것입니다.
->다음은 공백을 찾을 때까지 각 이름을 문자 단위로 살펴 보는 일반적인 VBA 루틴입니다. 그런 다음 공간의 왼쪽에있는 것은 무엇이든간에 한 열에 놓고 그 뒤에있는 칸의 오른쪽에있는 것은 무엇이든 놓습니다. (0, 1) 오프셋 (0, 1) = 왼쪽 (네임,보고 -) ActiveCell = "네임 = ActiveCell" 1) ActiveCell Offset (0, 2) = Mid (thename, looking + 1) Exit For End If 다음 ActiveCell 오프셋 (1, 0) 루프 활성화
이 루틴은 이름이 한 칸 (Harvey Wallbanger 또는 Tom Collins와 같은) 다음 표에는 두 개 이상의 공백이있는 이름에 코드를 실행 한 결과가 나와 있습니다.
William Healer | Zak H. Sneezer III | Zak |
H Sneezer III | 좋은 파싱 시도는 아니지만 Harvey Wallbanger와 Tom Collins의 구문 분석에는 문제가 없지만 |
이름을 파싱하는 것이 완벽하지는 않지만이 방법을 사용하면 더 나은 결과를 얻을 수 있습니다.
이 프로세스는 이름을 반복하면서 함수를 호출하는 VBA 서브 루틴에서 실행됩니다. 공백 수는 주 루프에서 일찍 결정되며 함수는 분리 간격이있는 위치를 반환합니다.
Sub parse_names () 다음과 같이 문자열을 희미하게 둡니다. 공백으로 둡니다. ActiveCell = "thename = ActiveCell. 값 공간 = 0 테스트의 경우 1 Len (thename)의 경우 Mid (thename, test, 1) =" "Then ("", thename, spaces) End space If 공백> 0 Then ActiveCell. 공백> 0 다음 공백> = 3 다음 If 공백> = 3 다음 Break_space_position = space_position오프셋 (0, 1) = 왼쪽 (thename, break_space_position - 1) ActiveCell. Offset (0, 2) = Mid (thename, break_space_position + 1) Else '전체 이름이 공백없이 ActiveCell 인 단일 이름 일 때 사용됩니다. 오프셋 (0, 1) = 이름 끝내기 ActiveCell. 오프셋 (1, 0). 활성화 Loop End Sub 함수 space_position (what_to_look_for 문자열로, what_to_look_in은 문자열로, space_count는 정수로) 정수로 사용 loop_counter 정수로 space_position = 0 loop_counter = 1로 space_count로 space_position = InStr (루프 _ 카운터 + space_position, what_to_look_in, what_to_look_for) space_position = 0 다음 종료 기능을 위해 종료
다음 표는 결과가 어떻게 나타나는지 보여줍니다:
Dr. 윌리엄 힐러
William | Healer | Zak H. Sneezer III |
Zak H. | Sneezer III | 이름 해석은 기술적 인 과정만큼이나 예술이다. 이 두 번째 예에서는 모든 성 및 이름이 올바른 열에 있습니다. 다섯 개 이상의 공백이있는 새로운 긴 이름이 도입되면 루틴은 구문 분석을 잘못 수행 할 수 있으며 VBA 코드는 더 많은 조건부 테스트가 필요합니다. 그러나이 예제는 이제 산업 강도의 파싱 루틴으로 바른 길을 걷고 있습니다. |