
OFFSET 함수를 사용하여 열의 데이터를 3배로 늘리고 싶습니다. 하지만 중복된 데이터(때로는 2번 이상 반복)가 있어서 둘 다 아닌 세 배로 만들고 다른 하나는 유지하고 싶습니다. 내 데이터와 기능은 다음과 같습니다.
=OFFSET($A$2,INT((ROWS($A$2:A2)-1)/3),0)
A
2 5YJSA3H17EFP49729
3 5YJSA3H17EFP41128
4 5YJSA3H17EFP30954
5 5YJSA3H17EFP30954
6 5YJSA3H17EFP30212
7 5YJSA3H17EFP30050
이 예에서는 5YJSA3H17EFP30954가 중복되었지만 그중 하나에 OFFSET을 수행하고 다른 하나는 유지하려고 하므로 이를 4번 반복하려고 합니다.
답변1
B2, C2에 이것을 입력하면
지하 2층 =IFERROR(IF(AND(A2=A1;B1=3);1;IF(AND(A2=A1;B1<3);0;3));3) C2 =IFERROR(오프셋(B2;-1;0)+오프셋(C2;-1;0);0)
그런 다음 B 및 C 열을 채우면 다음에 대한 테이블이 표시됩니다.
B) 동일한 행에 있는 각 항목이 C 열에서 반복되어야 하는 횟수
) 반복된 값을 선택할 A1 오프셋 행.
이제 저는 이것이 수식으로는 가능하지 않다고 생각합니다.
VBA를 사용해야 합니다. 아래에서는 테이블이 A1에서 시작하는 경우 요청된 테이블을 생성하는 "하위"(위에서 선택한 논리/공식 포함)를 찾습니다.
하위 createDupeTable() r = 1: c = 1 ' 가정: Cells(r,c)를 사용하여 A1에 액세스하는 경우 br = 1: bc = c + 1 ' 복사본 삽입을 시작할 위치, Cells(br,bc) ' "B1"(위)의 값은 항상 3입니다. pz = 3 Do While Cells(r, c).Value <> "" a1 = 셀(r, c).값 a2 = 셀(r + 1, c).값 b1 = pz a2 = a1이고 b1 = 3이면 Z = 1 또 다른 a2 = a1이고 b1 < 3이면 Z = 0 또 다른 Z = 3 종료 조건 종료 조건 pz = Z Z > 0일 때 수행 Cells(br, bc).Value = Cells(r, c).Value ' 목록에서 하나의 값을 복사합니다. Z = Z - 1 br = br + 1 고리 r = r + 1 고리 서브 끝
결과:
AB 1 5YJSA3H17EFP49729 5YJSA3H17EFP49729 2 5YJSA3H17EFP41128 5YJSA3H17EFP49729 3 5YJSA3H17EFP30954 5YJSA3H17EFP49729 4 5YJSA3H17EFP30954 5YJSA3H17EFP41128 5 5YJSA3H17EFP30212 5YJSA3H17EFP41128 6 5YJSA3H17EFP30050 5YJSA3H17EFP41128 7 5YJSA3H17EFP30954 8 5YJSA3H17EFP30954 9 5YJSA3H17EFP30954 10 5YJSA3H17EFP30954 11 5YJSA3H17EFP30212 12 5YJSA3H17EFP30212 13 5YJSA3H17EFP30212 14 5YJSA3H17EFP30050 15 5YJSA3H17EFP30050 16 5YJSA3H17EFP30050