IT

여러 Excel 열의 데이터를 모두 하나의 열로 통합하는 방법

itgroup 2023. 6. 22. 21:41
반응형

여러 Excel 열의 데이터를 모두 하나의 열로 통합하는 방법

4열의 데이터와 각 열에 20,000줄의 데이터가 있는 엑셀 시트를 가지고 있다고 가정해 보겠습니다.

모든 데이터를 하나의 열에 통합할 수 있도록 하는 가장 효율적인 방법은 무엇입니까(즉, 4개의 열에 분산된 20,000개의 데이터 대신 A열에 80,000개의 데이터).

또한 해당 솔루션을 구현하는 방법.즉, 귀사의 솔루션이 "공식"이 아니라 VBA라면 어떻게 솔루션을 구현할 수 있을까요?

감사합니다!

워크북을 저장합니다.이 코드가 원하는 대로 작동하지 않으면 저장하지 않고 닫았다가 다시 여는 방법밖에 없습니다.

한 열에 나열할 데이터를 선택합니다.연속된 열이어야 합니다.빈 셀을 포함할 수 있습니다.

Alt+F11을 눌러 VBE를 엽니다.

Control+R을 눌러 프로젝트 탐색기를 봅니다.

워크북의 프로젝트로 이동하여 [삽입] - [모듈]을 선택합니다.

코드 창에 이 코드 붙여넣기

Sub MakeOneColumn()

    Dim vaCells As Variant
    Dim vOutput() As Variant
    Dim i As Long, j As Long
    Dim lRow As Long

    If TypeName(Selection) = "Range" Then
        If Selection.Count > 1 Then
            If Selection.Count <= Selection.Parent.Rows.Count Then
                vaCells = Selection.Value

                ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)

                For j = LBound(vaCells, 2) To UBound(vaCells, 2)
                    For i = LBound(vaCells, 1) To UBound(vaCells, 1)
                        If Len(vaCells(i, j)) > 0 Then
                            lRow = lRow + 1
                            vOutput(lRow, 1) = vaCells(i, j)
                        End If
                    Next i
                Next j

                Selection.ClearContents
                Selection.Cells(1).Resize(lRow).Value = vOutput
            End If
        End If
    End If

End Sub

F5를 눌러 코드를 실행합니다.

다음과 같은 최상의 간단한 솔루션:

단일 열에 복사할 열의 범위를 선택

셀 범위 복사(복수 열)

메모장 열기++

선택한 셀 범위를 붙여넣습니다.

Ctrl+H를 누르고 \t를 \n으로 바꾸고 모두 바꾸기를 클릭합니다.

모든 다중 열이 하나의 열 아래에 있음

이제 동일한 것을 복사하여 엑셀에 붙여넣습니다.

VBA에서 코딩하는 데 시간을 낭비하고 싶지 않은 사람들을 위한 간단하고 효과적인 솔루션

간단한 Excel 공식을 사용하는 방법은 다음과 같습니다. 고급 VBA가 필요하지 않습니다.비결은 OFFSET 공식을 사용하는 것입니다.다음 스프레드시트 예제를 참조하십시오.

https://docs.google.com/spreadsheet/ccc?key=0AuSyDFZlcRtHdGJOSnFwREotRzFfM28tWElpZ1FaR2c&usp=sharing#gid=0

Excel 2003을 사용하는지 2007을 사용하는지에 대해서는 언급하지 않았지만 Excel 2003의 행 수가 65,536개로 제한되는 문제가 발생할 수 있습니다.2007을 사용하는 경우 제한은 1,048,576입니다.

또한 분석을 위한 최종 목표가 무엇인지 물어봐도 될까요?데이터에 대해 많은 통계 계산을 수행해야 하는 경우 Excel 환경에서 R과 같이 데이터 조작 및 분석에 보다 직접적으로 적합한 환경으로 전환하는 것이 좋습니다.

R을 Excel에 연결하는 다양한 옵션은 다음과 같습니다.

  1. 리셀
  2. RODBC
  3. R 매뉴얼의 기타 옵션

데이터를 R 안팎으로 이동하는 데 사용할 항목에 관계없이, 넓은 형식에서 긴 형식으로 변경하는 코드는 매우 사소한 것입니다.나는 그것을 즐깁니다.melt()재구성 패키지의 함수입니다.이 코드는 다음과 같습니다.

library(reshape)
#Fake data, 4 columns, 20k rows
df <- data.frame(foo = rnorm(20000)
    , bar = rlnorm(20000)
    , fee = rnorm(20000)
    , fie = rlnorm(20000)
)
#Create new object with 1 column, 80k rows
df.m <- melt(df)

여기서 통계 또는 그래프 작업을 원하는 수만큼 수행할 수 있습니다.위의 Rexcel 플러그인을 사용하면 이 모든 것을 실행하여 Excel 자체 내에서 실행할 수 있습니다.R 커뮤니티는 매우 적극적이며 여러분이 마주칠 수 있는 모든 질문을 해결하는 데 도움을 줄 수 있습니다.

행운을 빕니다.

Blockspring을 보십시오. 플러그인을 설치해야 하지만 다음과 같이 부르는 또 다른 기능일 뿐입니다.

=BLOCKSPRING("twodee-array-reduce","input_array",D5:F7)

소스 코드 및 기타 세부 정보는 여기에 있습니다.이 방법이 적합하지 않거나 내 솔루션을 구축하려는 경우fork내 함수(Python) 또는 지원되는 다른 스크립트 언어 사용(Ruby,R,JS등).

공식

=OFFSET(Sheet1!$A$1,MOD(ROW()-1,COUNT(Sheet1!$A$1:$A$20000)),
    (ROW()-1)/COUNT(Sheet1!$A$1:$A$20000))

두 번째 워크북의 각 셀에 배치하면 소스 시트에서 적절한 셀이 검색됩니다.매크로 없이 한 시트에서 다른 시트로 복사하여 결과를 다시 포맷할 수 있습니다.

COUNT 함수의 범위를 소스 시트의 최대 행 수와 일치하도록 수정해야 합니다.필요에 따라 열 헤더를 조정합니다.

빈 셀에 대해 0이 아닌 다른 값이 필요한 경우 조건부를 포함하는 것이 좋습니다.

데이터를 다시 포맷하는 스크립트가 더 효율적일 수 있지만, 현대 Excel 워크북에서는 20k 행이 더 이상 실질적인 제한이 아닙니다.

언급URL : https://stackoverflow.com/questions/4480227/how-to-consolidate-data-from-multiple-excel-columns-all-into-one-column

반응형