홈>
아래와 같이 Excel에 데이터가 있습니다 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ASAP 유틸리티를 사용하여 여러 열로 분할 한 경우. 데이터 열을 현명하게 분할합니다. 5 열로 나누려면 다음과 같이 행 방식으로 진행하십시오.
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23
그러나 다음과 같이 열 단위로 나누고 싶습니다.
1 6 11 16 20
2 7 12 17 21
3 8 13 18 22
4 9 14 19 23
5 10 15
여기 지만 행 수를 요청합니다. 최대한 많은 열을 요청한 다음 ASAP Utilities처럼 데이터를 분할하고 싶습니다.
모든 긍정적 인 제안을 환영합니다 ...
- 답변 # 1
- 답변 # 2
이와 같은 일이 아직 완전히 테스트되지는 않았지만 시작입니다.
Sub t() Dim xDimension As Integer Dim lngLoopCount As Long Dim lngLastRow As Long Dim lngPresentation As Long xDimension = 5 lngPresentation = 1 lngLastRow = Range("a1").End(xlDown).Row For lngLoopCount = 1 To lngLastRow Step xDimension Range("c1").Offset(lngPresentation, 0).Resize(1, xDimension).Value = _ Application.Transpose(Range("a1").Offset(lngLoopCount - 1, 0).Resize(xDimension, 1).Value) lngPresentation = lngPresentation + 1 Next End Sub
- 답변 # 3
원하는 순서대로 범위를 5 열로 나눕니다.
With
를 업데이트해야합니다. 당신이보고있는 관련 시트에 진술하고NoCols
를 변경하여 분할을 변경할 수 있습니다 출력에서 원하는 열 수로 변경할 수 있습니다.Public Sub SplitRange() Dim arr As Variant, tmp As Variant Dim i As Long, j As Long Dim NoCols As Long Dim rng As Range Dim c ' Change this to how many columns you want NoCols = 5 ' Change to your sheet With Sheet6 .Range(.Columns(4), .Columns(20)).Clear Set rng = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)) tmp = rng.Value2 ReDim arr(1 To WorksheetFunction.RoundUp(UBound(tmp) / NoCols, 0), 1 To NoCols) i = 1: j = 1 For Each c In tmp If i > WorksheetFunction.RoundUp(UBound(tmp) / NoCols, 0) Then j = j + 1: i = 1 arr(i, j) = c i = i + 1 Next c With .Cells(1, 4) Range(.Offset(0, 0), .Offset(UBound(arr, 1) - 1, UBound(arr, 2) - 1)) = arr End With End With End Sub
- 답변 # 4
이 코드를 사용해보십시오
Function SPLITARR(ByRef v() As Variant, MaxRow As Integer) As Variant Dim ArraySize As Integer Dim MaxCols As Integer Dim NewArray() As Variant Dim x As Integer, y As Integer, z As Integer ArraySize = (UBound(v(), 1) - LBound(v(), 1)) + 1 MaxCols = ArraySize \ MaxRow If ArraySize Mod MaxRow > 0 Then MaxCols = MaxCols + 1 ReDim NewArray(LBound(v(), 1) To MaxRow, 1 To MaxCols) For x = LBound(v(), 1) To UBound(v(), 1) y = x Mod MaxRow If y = 0 Then y = MaxRow z = x \ MaxRow If x Mod MaxRow = 0 Then z = z - 1 NewArray(y, z + 1) = v(x, 1) Next SPLITARR = NewArray() End Function
와 같이 호출해야합니다
Sub caller() Dim a() As Variant a() = Range("A1",Range("A" & Rows.Count).End(xlUp)) a() = SPLITARR(a(), 5) '<~ change this to your needs ActiveCell.Resize(UBound(a(), 1), UBound(a(), 2)).Value = a() End Sub
다음과 같은 출력을 제공합니다.
관련 자료
- python - Pandas 시리즈를 하위 문자열별로 여러 열로 분할
- python - 'key = value'항목을 기반으로 pandas 열을 여러 열로 분할
- bash - 열의 일부를 기준으로 CSV 파일 분할
- pandas - Python에서 열의 값을 기반으로 csv 파일을 두 개의 파일로 분할하려면 어떻게해야합니까?
- awk - 순서가 아닌 여러 파일을 병합하고 Linux의 특정 열에 파일 이름을 할당하는 방법은 무엇입니까?
- sql server - 여러 시간 조건을 기반으로 열 만들기
- if statement - r의 여러 기준을 기반으로 열을 만드는 방법은 무엇입니까?
- r - 여러 문자열을 조건으로 사용하여 데이터 프레임에 열 추가
- VBA Excel - vba excel - 특정 열을 찾아 excel에서 다른 열 앞의 열로 이동
- python - pandas - 단일 열의 csv 데이터 형식을 여러 새 열로 다시 지정
- sql server - PHP에서 여러 값 열을 인쇄하는 방법
- Excel VBA에서 문자열 분할로 인해 유형 불일치 오류가 발생합니다
- Excel 값을 읽고 PowerShell의 열 이름에서 변수 만들기
- java - 여러 열이있는 단일 행으로 Excel에서 값 읽기
- sql - postgresql - postgresql의 열에서 여러 데이터를 추출하는 방법
- Excel If Condition 일치하는 두 열 가져 오기 값
- 열 계산에 대한 Excel 수식 SUMIF 문제
- Excel에서 여러 조건 정렬 및 인덱싱
- windows - 여러 CSV 파일을 처리하고 powershell을 사용하여 이중 세미콜론 문자가있는 단일 열에서 행 삭제
- python - pandas 데이터 프레임 열을 정규식으로 2로 분할
관련 질문
- Excel /Visual Basic을 사용하여 어 그리 게이션을 정렬하는 방법
- excel : 행 또는 열이 VBA의 변수 인 셀의 값 참조
- excel : 랩 결과에 대한 매크로
- excel : 열 머리글로 검색 및 바꾸기
- 전체 텍스트 파일을 Excel로 복사하는 방법
- arrays : Excel VBA 숫자 배열을 내림차순으로 정렬하는 가장 빠른 방법은 무엇입니까?
- excel : VBA에서 사용자 지정 대량 전자 메일을 만들려면 어떻게합니까?
- Excel VBA 복사 붙여 넣기 후 서식 지정
- Excel VBA에서 Excel 계산 값을 변수에 직접 할당
- excel : 문자열 변수의 두 번째 인스턴스 이후 부분 일치 캡처
조금 사용자 친화적 인이 코드를 사용해보십시오
이 매크로를 실행할 때
vba
데이터를 분할하려는 열 수를 입력 할 수있는 텍스트 상자를 표시합니다.5
를 입력하면 을 클릭하고Ok
를 클릭하십시오. ,여기에 코드가 있습니다
이 코드는 입력을 기반으로 열을 동적으로 분할합니다. 이것이 도움이 되길 바랍니다.