1,2,3,4,5...라는 시퀀스를 생각해 봅시다. Excel에서는 분명히 쉽게 만들 수 있습니다. 하지만 원래 시퀀스의 각 멤버가 N번 연속으로 존재하는 파생 시퀀스를 어떻게 만들겠습니까?
N=3인 경우 1,1,1,2,2,2,3,3,3,4,4,4,... 등.
나는 붙여넣기 특수 추가 기능을 사용하여 매 라운드마다 N 행을 아래로 밀어 1의 열을 복사했습니다. 그러나 그것은 좋은 해결책과는 거리가 멀다.
귀하의 아이디어에 감사드립니다.
답변1
이에 대한 가장 간단한 해결책은 일반 Excel 수식을 사용하는 것입니다.
A1에서 시작하는 경우 이 수식을 드롭한 후 복사하세요.
=ROUNDUP(ROWS(A$1:A1)/3,0)
모으다숫자를 다음으로 반올림합니다.N소수점 자리. 이 경우,N0으로 설정되어 Excel이 가장 가까운 정수로 반올림됩니다.
행범위의 행 수를 계산합니다. 시작 위치에 따라 범위 참조를 조정하십시오. 복사/붙여넣기하면 Excel이 다른 셀에 대한 조정을 처리합니다.
참고: 여기의 달러 기호는 다음과 같습니다.중요한. 범위 시작에 대한 참조를 잠급니다.언제나수식을 복사/붙여넣는 방법에 관계없이 범위의 시작 행(또는 더 적절하게는 수식을 놓은 첫 번째 셀의 행 - 범위의 첫 번째 행에서 시작)에 있어야 합니다. 이것이 없으면 복사할 때 수식이 깨집니다. 따라서 첫 번째 셀의 위치에 따라 문자와 숫자를 변경하되 달러 기호는 그대로 두십시오.
/삼ROWS 수를 3으로 나누는 방법이 있습니까? 이는 ROUNDUP 함수 내에 있고 소수점 이하 0자리로 설정되어 있으므로 모든 결과는 가장 가까운 정수로 반올림됩니다. 수식이 나머지 열에 채워지면 모든 숫자가 3번 반복됩니다. 다른 반복률을 얻으려면 3을 다른 숫자로 변경하세요.
이 일을 하고 싶다면가로질러ㅏ열, 대신에아래에ㅏ열(예: A1, A2, A3,... 대신 A1, B1, C1,...) ROWS 대신 COLUMNS 함수를 사용하고 시작 열이 잠기도록 범위 참조를 조정해야 합니다. 시작 행 대신.
예:
=ROUNDUP(COLUMNS($A1:A1)/3,0)
연속적으로 작동하는 공식의 경우또는열 레이아웃의 경우 아래와 같은 것을 사용할 수 있지만 실제로 사용하는 레이아웃에 따라 위 중 하나를 선택하는 것이 더 좋습니다. 범위가 여러 행에 걸쳐 있는 경우에도 바람직하지 않은 결과가 발생할 수 있습니다.그리고여러 열.
=ROUNDUP(COLUMNS($A1:A1)*ROWS(A$1:A1)/3,0)
비순차적이거나 숫자가 아닌 항목의 경우 소스 목록으로 사용할 범위를 별도로 설정하는 것이 좋습니다. 소스 값 목록이 B1부터 시작하는 B열에 있다고 가정해 보겠습니다. 이를 위해 A열에서 값을 각각 3번 반복하려면 A1에서 이것을 사용하고 다음을 복사합니다.
=INDIRECT(CONCATENATE("B",ROUNDUP(ROWS(A$1:A1)/3,0)))
참고: 이는 소스 열의 이동에 대해 조정되지 않습니다. "B"
소스 열이 이동된 경우 새 위치와 일치하도록 변경하여 수식을 수동으로 수정해야 합니다 . 소스 데이터가 행 1이 아닌 다른 행에서 시작하는 경우 수식을 약간 조정하여 오프셋을 추가해야 합니다.
반복 속도를 조정하려면 제수에 대한 참조 셀을 사용하십시오. 아래 예는 이전 수식으로 시작하며 제수가 C1에 있다고 가정합니다.
=INDIRECT(CONCATENATE("B",ROUNDUP(ROWS(A$1:A1)/C1,0)))
답변2
내가 찾은 것 중 하나는 동적 배열에 잘 작동했습니다.
=ROUNDDOWN(SEQUENCE(count*repeats,,1,1/repeats),0)
예: 횟수=2, 반복 횟수=3
=ROUNDDOWN(SEQUENCE(6,,1,1/3),0)
생산물:
1,1,1,2,2,2
답변3
다른 상황(결과를 행이나 열에 저장하는 기능, 다른 통합 문서 등)에서 유연하고 재사용할 수 있으려면 가장 좋은 방법은 Excel의 매크로 언어(VBA)를 사용하는 것입니다. 빠르게 시작하려면 자동화하려는 대략적인 단계를 매크로에 기록한 다음 해당 매크로를 편집하여 미세 조정하고 사용자 정의할 수 있습니다. 예를 들어, 첫 번째 열의 각 셀을 세 번째 열로 3배로 만드는 일부 VBA 코드는 다음과 같습니다.
Sub triplicate()
iDestCol = 3
nCopy = 3
rowEnd = ThisWorkbook.ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row
nIndex = 0
With ThisWorkbook.ActiveSheet
For i = 1 To rowEnd
For j = 1 To nCopy
Cells((nIndex + j), iDestCol) = Cells(i, 1)
Next j
nIndex = nIndex + nCopy
Next i
End With
End Sub