2012-11-30 5 views
-1

약 800 개의 레코드가있는 하나의 데이터 열이 있습니다. 각 18 셀은 하나의 레코드입니다. 나는 매 18 셀을 가져 와서 행을 동적으로 바꾸는 스크립트가 필요합니다. 심지어 열에서 행까지 18 개의 레코드를 바꿀 수있는 수식을 작성하는 방법도 필요합니다.하나의 열을 여러 행으로 바꾸기

+0

안녕하세요, SO에 오신 것을 환영합니다. 우리는 사람들을 돕는 것을 좋아하지만, 당신이 시도한 것을보아야합니다. 이것은 당신이 문제가 있다는 것을 증명하고 여기에 복사 - 붙여 넣기 코드를 얻기위한 것이 아닙니다. – rcdmk

+1

데이터가 A1에서 시작되면 B1에 다음을 입력하십시오.'= IF (MOD (ROW(), 18) = 1, OFFSET ($ A1, COLUMN() - 2,0), "")' 18 개의 열을 채운 다음 아래로 800 개의 행을 덮으십시오. –

+0

Tim의 아이디어는 우아한 아이디어이며 작동해야합니다.하지만 800 행이 포함 된 식의 공식 기반 솔루션을 사용하는 것을 꺼려합니다. 귀하의 PC 속도에 따라 다르지만 Excel에서 많은 것을 던지면 찾아보기와 같은 공식이 갈리는 경향이 있습니다. 이 경로를 사용하면 계산을 한 번 수행하고 수식 블록을 복사하여 값으로 붙여 넣을 수 있습니다. –

답변

1

완벽한 솔루션을 요구하는 것보다 오히려 걸리는 시간을 물어 보는 것이 좋을 것이므로 "뭘 했니?"라는 질문을 받게 될 것입니다. 그것이 말하게되면서, 나는 당신에게 당신을 시작하게하는 약간의 팁을 제공 할 수있다.

VBA에서이 작업을 수행하려면 첫 번째 셀에서 시작하여 해당 셀과 다음 18 개의 행으로 구성된 범위를 가져온 다음 통합 문서의 다른 시트 (아마도)에 붙여 넣은 다음이를 옮겨야합니다 열에서 행으로. 그러면 루프가 19 개의 셀을 오프셋하고 다시 시작합니다. Unable to write a Macro for Excel VBA to copy a specific cell value to the next blank rows

당신과 다소 유사한 루프를하고 당신에게 구문을 줄 것이다 :

내가이 스레드에서 준 대답을 살펴보십시오.

붙여 넣기/조바꿈을 수행하는 구문을 얻으려면 수동으로 수행하고 매크로 레코더를 사용하여 동작을 기록하십시오. 개발자 탭에서 찾을 수 있습니다. (개발자 탭이 보이지 않으면 파일 -> 옵션 -> 리본 사용자 정의로 이동하여 개발자 탭을 켜십시오.)

시도해보십시오. 당신이 붙어있는 곳의 세부 사항을 가지고 다시 게시하십시오.

0

이 VBA 코드를 사용하여이를 수행 할 수 있습니다.

Public Sub TransposePaste() 
    'Value we want to step by.... 
    Dim stepVal As Long 
    stepVal = 18 
'Declare start row variable (-1) 
Dim row As Long 
row = 0 

'Declare the column the data is coming from 
Dim col As Long 
col = 1 

'Declare and set worksheet 
Dim ws As Worksheet 
Set ws = Sheet1 

'end row of the data 
Dim endRow As Long 


endRow = ws.Cells(ws.Rows.Count, col).End(xlUp).row 

'cycle to end of data end of data... 
For i = 1 To endRow Step stepVal 

'increment row each time 
row = row + 1 

    'cycle through the columns outputting the data 
    For j = 1 To stepVal 

    Sheet1.Cells(row, j).Value = Sheet1.Cells(i + j - 1, col).Value 

    Next j 
Next i 

최종 하위

관련 문제