데이터를 특정 순서로 유지하면서 Excel 데이터를 1 열에서 8 열로 나누는 방법은 무엇입니까?


4

데이터 순서를 유지해야합니다. 설명하기 위해 셀에서 데이터를 이동해야합니다.

a1 내지 b1,
a2 내지 c1,
a3 내지 d1,
a4 내지 e1,
a5 내지 f1,
a6 내지 g1,
a7 내지 h1,
a8 내지 i1,

a9 ~ B2
a10 ~ C2
a11 ~ D2
a12 ~ E2
a13 ~ F2
a14 ~ G2
a15 ~ H2
a16 ~ I2

A 열의 24000 개 항목을 모두 통과 할 때까지 헹구고 반복하십시오.

매크로 나 vba를 통해이를 쉽게 수행 할 수있는 방법이 있습니까? 아마도 가장 최신 버전의 기능이 이미이 작업을 수행했을 수도 있습니다.


내가하고있는 일의 사진을 게시하려고했지만 그렇게 할 포럼 "포인트"가 충분하지 않습니다. : S
Ralph

답변:


2

VBA 솔루션은 다음과 같습니다.

Option Explicit
Private Sub ReArrangeCells()

  Dim ws As Worksheet, LastRow As Long
  Set ws = Excel.ActiveSheet

  LastRow = Range("A65536").End(xlUp).Row

  Dim i As Long, j As Long, FromCell As Range, ToCell As Range, sNewCol As String, sNewRow As String
  For i = 1 To LastRow

    Set FromCell = ws.Range("A" & i)                       'the cell we want to move
    sNewCol = IIf(i Mod 8 = 0, Chr$(72), Chr$((i Mod 8) + 64))
    sNewRow = IIf(i Mod 8 = 0, (i \ 8), (i \ 8) + 1)
    Set ToCell = ws.Range(sNewCol & sNewRow)               'the cell we want to copy the data to

    FromCell.Copy ToCell
    If i <> 1 Then FromCell.Clear

    If i Mod 100 = 0 Then DoEvents

  Next i

End Sub

이것은 매우 감사합니다 매력처럼 작동했습니다!
Ralph

2

해결책은 다음과 같습니다. 다음을 가정합니다.

  1. 모든 원본 데이터는 A 열에 있습니다.
  2. B 열에는 행의 색인 만 포함됩니다

공식 : =INDIRECT(CONCATENATE("a",$B2*8 + col_offset))여기서 col_offset은 열 번호 (0 인덱스)입니다. 따라서 첫 번째 열 =INDIRECT(CONCATENATE("a",$B2*8))은 8 번째 열이 =INDIRECT(CONCATENATE("a",$B2*8+7))됩니다.

일을 더 명확하게하는 그림 :

여기에 이미지 설명을 입력하십시오

편집 : 새로운 공식 : =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))어디 -2-3행과 열 오프셋이다. 데이터를 표시하려는 모든 셀에 붙여 넣으십시오. (이 솔루션은 B 열을 삭제할 수 있기 때문에 더 좋습니다)


@Ralph에 문제가 있으면 알려주십시오. 지금 조금 정리하려고 노력 중입니다.
soandos

나는 이것을 처음 8 (a1에서 a8)까지 작동 시키지만 어떻게 그것을 넘어서 작동하게합니까? 자동 채우기를 아래로 드래그하려고했는데 잘못된 데이터 유형 오류가 발생했습니다. 나는 잘못하거나 이해하지 못하는 일을해야합니다.
랄프

문제가되지는 않는 새로운 하나, (당신은 오래된 공식을 한 번에 전체 행을해야 할) 새로운 수식 편집을 볼 수 있지만, Ctrl 키 + D 잘 작동합니다
soandos

다시 한 번 해결책에 감사드립니다. 나는 그것이 어떻게 작동하는지 알 수 없었지만, 내가 옳은 일을하지 않기 때문이라고 확신합니다.
Ralph

0

VBA 답변은 많은 양의 데이터를 처리하는 데 가장 적합하지만 "Transpose"를 사용하여 복사 / 붙여 넣기를 통해이 작업을 수행 할 수도 있습니다. 작은 요구 사항을위한 간편한 마우스 오른쪽 클릭 솔루션입니다. 이것은 확실히 2010에 적용되며 2007도 믿습니다.

아직 이미지를 만들 수없는 것 같습니다 ..

  • 셀을 세로로 복사
  • 다른 셀을 마우스 오른쪽 버튼으로 클릭하고 "붙여 넣기 옵션"아래의 네 번째 옵션을 사용하십시오 (직각에서 두 개의 파란색 사각형 모양)

어떤 상황에서는 더 빠릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.