여러 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 공식을 사용하는 것입니다.다음 스프레드시트 예제를 참조하십시오.
Excel 2003을 사용하는지 2007을 사용하는지에 대해서는 언급하지 않았지만 Excel 2003의 행 수가 65,536개로 제한되는 문제가 발생할 수 있습니다.2007을 사용하는 경우 제한은 1,048,576입니다.
또한 분석을 위한 최종 목표가 무엇인지 물어봐도 될까요?데이터에 대해 많은 통계 계산을 수행해야 하는 경우 Excel 환경에서 R과 같이 데이터 조작 및 분석에 보다 직접적으로 적합한 환경으로 전환하는 것이 좋습니다.
R을 Excel에 연결하는 다양한 옵션은 다음과 같습니다.
데이터를 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
'IT' 카테고리의 다른 글
| Google Font API 키는 어디에서 찾을 수 있습니까? (Newbie) (0) | 2023.06.22 |
|---|---|
| sql server 2005에서 데이터 손실 없이 테이블의 "스키마"를 변경하려면 어떻게 해야 합니까? (0) | 2023.06.22 |
| filter-branch --tree-filter 뒤에 gitrepo에서 refs/original/heads/master를 제거하시겠습니까? (0) | 2023.06.22 |
| Firebase 2.0 - 안드로이드 앱의 여러 가지 맛(환경)을 다루는 방법은 무엇입니까? (0) | 2023.06.22 |
| C에서 char 배열에서 메모리를 해제하는 방법 (0) | 2023.06.22 |