정보를 행으로 분할 (Microsoft Excel)
James는 일련의 행에 포함 된 워크 시트에 일부 데이터를 가지고 있습니다. 데이터의 열 중 하나에는 셀당 여러 줄이있는 셀이 포함됩니다. (셀의 데이터는 항목간에 Alt + Enter를 눌러 행으로 분리되었습니다.) James는이 데이터를 여러 행으로 분할하려고합니다. 예를 들어, 행의 단일 셀에 세 줄의 데이터가있는 경우 해당 셀의 데이터는 세 행으로 분할되어야합니다.
Excel은 텍스트를 열로 도구를 사용하여 데이터를 별도의 열로 분할하는 편리한 방법을 제공합니다. 이것은 Alt + Enter를 누를 때 Excel이 삽입하는 ASCII 10 문자의 존재를 기반으로 데이터를 분할하는 데 사용할 수 있습니다. 문제는 이것이 데이터를 별도의 열로 성공적으로 분할하지만 James가 요청한 것처럼 별도의 행으로 가져 오지 않는다는 것입니다.
즉,이 문제에 대한 해결책에는 매크로 사용이 포함되어야합니다. 다음 코드에는 한 가지 접근 방식이 나와 있습니다. 이 예에서 매크로는 워크 시트의 모든 항목을 “확장”하고 워크 시트의 데이터가 행 1에서 시작한다고 가정합니다.
Sub CellSplitter1() Dim Temp As Variant Dim CText As String Dim J As Integer Dim K As Integer Dim L As Integer Dim iColumn As Integer Dim lNumCols As Long Dim lNumRows As Long iColumn = 4 Set wksSource = ActiveSheet Set wksNew = Worksheets.Add iTargetRow = 0 With wksSource lNumCols = .Range("IV1").End(xlToLeft).Column lNumRows = .Range("A65536").End(xlUp).Row For J = 1 To lNumRows CText = .Cells(J, iColumn).Value Temp = Split(CText, Chr(10)) For K = 0 To UBound(Temp) iTargetRow = iTargetRow + 1 For L = 1 to lNumCols If L <> iColumn Then wksNew.Cells(iTargetRow, L) _ = .Cells(J, L) Else wksNew.Cells(iTargetRow, L) _ = Temp(K) End If Next L Next K Next J End With End Sub
매크로를 실행하려면 분할 할 셀이 포함 된 열을 iColumn 변수를 사용하여 지정해야합니다.
여기에 쓰여진대로 매크로는 네 번째 열의 정보를 분할합니다. 또한 분할 된 버전의 셀이 새 워크 시트에 저장되므로 원본 워크 시트는 전혀 영향을받지 않습니다.
매크로는 분할 기능을 사용하여 여러 줄 셀을 분리합니다. 이 기능은 Excel 2000부터 만 사용할 수 있으며 Mac 용 Excel에서는 전혀 사용할 수 없습니다. 또한 특정 셀을 선택한 경우에만 매크로를 실행할 수 있습니다. 이러한 모든 잠재적 인 문제를 극복하려면 대신 다음 매크로를 고려하십시오.
Sub CellSplitter2() Dim iSplitCol As Integer Dim iEnd As Integer Dim sTemp As String Dim iCount As Integer Dim i As Integer Dim wksNew As Worksheet Dim wksSource As Worksheet Dim lRow As Long Dim lRowNew As Long Dim lRows As Long Dim lRowOffset As Long Dim iTargetRows As Integer Dim iCol As Integer Dim iCols As Integer Dim iColOffset As Integer Dim AWF As WorksheetFunction On Error GoTo ErrRoutine Application.ScreenUpdating = False 'Set Column to split iSplitCol = 4 iCols = Selection.Columns.Count lRows = Selection.Rows.Count iColOffset = Selection.Column - 1 lRowOffset = Selection.Row - 1 lRowNew = lRowOffset Set wksSource = ActiveSheet Set wksNew = Worksheets.Add Set AWF = Application.WorksheetFunction With wksSource For lRow = (lRowOffset + 1) To (lRowOffset + lRows) sTemp = .Cells(lRow, iSplitCol) If Right(sTemp, 1) <> vbLf Then sTemp = sTemp & vbLf End If iCount = (Len(sTemp) - _ Len(AWF.Substitute(sTemp, vbLf, ""))) For iTargetRows = 1 To iCount lRowNew = lRowNew + 1 For i = (iColOffset + 1) To (iColOffset + iCols) If i <> iSplitCol Then wksNew.Cells(lRowNew, i) _ = .Cells(lRow, i) Else iEnd = InStr(sTemp, vbLf) wksNew.Cells(lRowNew, i) _ = Left(sTemp, iEnd - 1) sTemp = Mid(sTemp, iEnd + 1) End If Next i Next iTargetRows Next lRow End With ExitRoutine: Set wksSource = Nothing Set wksNew = Nothing Set AWF = Nothing Application.ScreenUpdating = True Exit Sub ErrRoutine: MsgBox Err.Description, vbExclamation Resume ExitRoutine End Sub
매크로는 분할 할 열을 나타 내기 위해 여전히 변수 사용에 의존합니다. 이 경우 변수는 iSplitCol이고 열 4로 설정됩니다. 매크로는 처음 실행될 때 선택한 셀에서만 작동하며 분리 된 셀은 새 워크 시트로 전송됩니다. 새 워크 시트의 왼쪽 위 셀 주소는 매크로가 실행될 때 선택한 왼쪽 위 셀과 동일합니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3263)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Splitting_Information_into_Rows [정보를 행으로 분할]
.