2016-11-09 1 views
0

나는 excel sheet을가집니다. "예제 수정"시트를보십시오.모든 행 - 열 값을 열 전용 형식으로 변환

값이 여러 개인 행과 열이 있습니다. 모든 값이 열 전용 형식이어야합니다. 즉, 2465, 2503 등 모든 값이 단일 새 열에 331806까지 필요합니다. (시트에서 colunm "K"이후의 값은 무시하십시오).

간헐적으로 빈 행이 있고 중간 영역에 원하지 않는 텍스트가 있기 때문에 VBA 스크립트 나 수식을 적용 할 수 없습니다.

심판 :

https://www.extendoffice.com/documents/excel/1172-excel-transpose-multiple-columns-into-one-column.html 나는 VBA 스크립트를 시도했지만 모든 행이 계속 존재하는 경우에만 작동합니다. 데이터 행에 존재까지, J에 열 A에서 모든 항목

Sub TableToColumn() 
    Dim Rng As Range, LR As Long, i As Long 
    LR = Range("A" & Rows.Count).End(xlUp).Row 
    For i = 1 To LR 
     Set Rng = Range("A" & i, "J" & i) 'Change range to suit needs 
     Range("M" & Rows.Count).End(xlUp)(2).Resize(Rng.Count) =  Application.WorksheetFunction.Transpose(Rng) 
    Next i 
End Sub 

이 VBA 코드 추출물 :

여기 내 코드입니다. 빈 행과 원하지 않는 원시 텍스트 값 행이있는 항목 시트에 어떻게 적용 할 수 있습니까?

또는 CSV 마이그레이션을 통해 정규식 파싱이 가능합니까?

가장 간단한 해결책이 필요합니다.

+0

왜 [삭제] ...의이를 해보자 (http://stackoverflow.com/questions/40513540/converting-all-row-column-values-to-column- only-format # 40513540) 및 변경 사항없이 다시 질문 하시겠습니까? –

+0

시도한 것을 보여주십시오. 스택 오버플로는 나를위한 코드가 아닙니다. 마찬가지로,이 질문은 너무 광범위하고 득표 및 종결의 위험이 있습니다. –

+0

Ref 링크의 VBA 스크립트는 제가 시도한 것입니다. 나는 내가 한 일을 설명했다. 그것은 내 경우에는 효과가 없다. 이 질문에 어떤 내용이 있습니까? –

답변

1

좋아 다음

Public Sub Answer() 

Dim RowCnt as Integer 
Dim Output as Variant 
Dim Data as Variant 
Data = ThisWorkbook.Worksheets("EXAMPLE CORRECTION").Range("B7:K1384") 

' How many rows will we have ? 
RowCnt=0 
for Row = LBound(Data, 1) to UBound(Data, 1) 
    for Col = LBound(Data, 2) to UBound(Data, 2) 
     if Not IsEmpty(Data(Row, Col)) and IsNumeric(Data(Row, Col)) Then RowCnt=RowCnt+1; 
    Next Col 
Next Row  
' Resize Output 
Redim Output(1 to RowCnt, 1) as Variant 
' Fill Output 
RowCnt=1 
for Row = LBound(Data, 1) to UBound(Data, 1) 
    for Col = LBound(Data, 2) to UBound(Data, 2) 
     if Not IsEmpty(Data(Row, Col)) and IsNumeric(Data(Row, Col)) Then 
      Output(RowCnt, 1) = Data(Row, Col) 
      RowCnt=RowCnt+1 
     end if 
    next 
next 
' Write to Some Column (Column L) for now 
ThisWorkbook.Worksheets("EXAMPLE CORRECTION").Range("L7:L" & RowCnt+6) = Output 

End Sub 
+0

이것은 좋은 시작이 될 것이며, 직면 한 문제를 디버그하고 수정할 수 있어야합니다. –

+0

대단히 고마워요. DIY 헤더 (0.1, 0.2, 등)가있는 행을 제거하려면'And Data (Row, Col)> 1 '을 추가했습니다. 그리고 총 출력을 범위에 붙여 넣기가 작동하지 않습니다. 모든 셀에서 값을 붙여 넣기 위해 편집했습니다. 매력처럼 작동합니다. –

+0

@unix_root 문제 없음! –