2012-09-25 2 views
1

어떻게 작동합니까? 마법사를 사용하고 싶지 않습니다. VBA를 사용하여 마법사를 사용하고 싶습니다.데이터를 바꾸는 대신 텍스트를 열로 삽입 할 수 있습니까?

나는 이름의 열이, 처음, 중간, 마지막으로, 접미사 일부 (주니어, 시니어) 는 이름의 일부가 일부 확인 이름은이 개 부분이 여러 중간 이름 (전체 이름이나 이니셜)가 (반 데르 lay, de Novo).

txt-to-column을 수행 할 때 공간이 필요하지만 결과 열의 수가 5에서 8 개가 될 수 있기 때문에 각 이름과 연결된 다음 열의 데이터를 삭제할 위험이 있습니다.

먼저 열을 추가하기 위해 Sub를 설정했지만 좀 더 우아하고 효율적이라고 생각했습니다.

+1

복사 데이터를 새 시트에 공백이 계산하는 경우

, 다음 코드는 그것을 공간의 최대 수를 얻을 것 . 텍스트를 열로 처리합니다. 원본 시트에 복사하여 삽입하십시오. 새 시트 삭제 –

답변

1

VBA에서 가장 쉬운 방법은 분리 기호 수 (또는 열 수)를 계산하고 적절한 수의 열을 넣은 다음 마법사를 실행하는 것입니다.

Dim shtTemp As Worksheet, lMaxSpaces As Long 

Set shtTemp = Sheets.Add 
shtTemp.Cells(1, 1).FormulaArray = _ 
    "=MAX(LEN('Sheet1!R[1]C[1]:R[1000]C[1])-LEN(SUBSTITUTE('Sheet1!R[1]C[1]:R[1000]C[1],"" "","""")))" 
lMaxSpaces = shtTemp.Cells(1, 1).Value 

Application.DisplayAlerts = False 
shtTemp.Delete 
Application.DisplayAlerts = True 

시트를 삽입하지 않고 또 다른 옵션은 다음과 같습니다 :

Dim vArr As Variant, lMaxSpaces As Long, lLoop As Long, lSpaces As Long 

vArr = Selection.Value 

For lLoop = LBound(vArr, 1) To UBound(vArr, 1) 
    lSpaces = Len(vArr(lLoop, 1)) - Len(Replace(vArr(lLoop, 1), " ", "")) 
    If lSpaces > lMaxSpaces Then lMaxSpaces = lSpaces 
Next 

Debug.Print lMaxSpaces 
+0

열 수가 일정하면 도움을 요청할 필요가 없습니다. –

+0

감사합니다. 정말 좋은 두 가지 옵션이 있습니다. –

+0

두 번째 옵션은 루프 시작시 형식이 일치하지 않습니다. –

관련 문제