ProgramingTip

한 시트에서 다른 시트로 n 번째 줄마다 복사

bestdevel 2021. 1. 9. 16:26
반응형

한 시트에서 다른 시트로 n 번째 줄마다 복사


1 열 700 행이있는 Excel 스프레드 시트가 있습니다. 나는 모든 일곱 번째 줄에 관심이 있습니다. 내가 관심있는 각 행 사이에 6 행을 포함하지 않습니다. 그래서 내 해결책은 다른 시트를 만들고 원하는 각 셀에 대한 참조를 지정하는 것이 었습니다.

=sheet1!a1
=sheet1!a8
=sheet1!a15

하지만 저는이 공식을 입력하고 싶지 않습니다 ...`100 번. 세 가지를 선택하고 상자를 드래그하면 내가 원하는 일을 찾을 수 없습니다.

제출 우아하고 수행하는 방법에 대한 아이디어가 있습니까?


새 시트의 A1에 다음을 입력하십시오.

=OFFSET(Sheet1!$A$1,(ROW()-1)*7,0)

... 그리고 복사합니다. 행 1이 아닌 다른 곳에서 시작하는 경우 ROW ()를 ROW (A1) 또는 행 1의 다른 셀로 변경 한 다음 다시 복사하십시오.

n 번째 줄을 여러 열로 비용 청구 다음 공식을 사용하십시오.

=OFFSET(Sheet1!A$1,(ROW()-1)*7,0)

이것도 바로 복사 할 수 있습니다.


7 번째 행마다 추출해야하는 경우 열 "A"앞에 열을 "삽입"합니다. 그런 다음 (1 행에 머리글 행이 가정) 2,3,4,5,6,7,8 행에 1,2,3,4,5,6,7 숫자를 입력합니다. 1,2,3,4,5,6,7을 강조 표시하고 해당 블록을 시트 끝에 넣습니다 (700 행 가치). 결과는 1,23,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 ……입니다. 이제 "A"열에서 오름차순으로 데이터를 정렬합니다. 모두 나중에는 모든 1이 시리즈의 첫 번째 항목이되고 7이 7 번째 항목이됩니다.


제 생각에는 질문에 대한 답변이 너무 도움말입니다. 다음은 두 가지 다른 접근 방식과 완전한 예제로 더 일반적인 것입니다.

OFFSET방법

OFFSET3 개의 필수 인수를 사용합니다. 첫 번째는 또는 특정 셀입니다. 다음 두 개는 내부 할 행과 열의 수입니다 (아래쪽 및 오른쪽). OFFNET셀의 내용을 예를 들어 OFFSET(A1, 1, 2)반환 이 결과 셀의 내용을 반환 C2하기 때문에 A1세포는 (1,1)우리가 추가 할 경우 (1,2)우리가 얻을에 (2,3)셀에있는 해당한다 C2.

이것을 다른 열에서 n은 행마다 반환-th하도록하려면 ROW함수를 사용할 수 있습니다 . 이 함수에 인수가 주어지지 라이선스 현재 셀의 행 번호를 반환합니다. 따라서에서 반환 된 값에 승수를 추가하여 모든 n 번째 셀을 반환하는 함수를 결합 OFFSET하고 ROW만들 수 있습니다 ROW. 예를 들면 OFFSET(A$1,ROW()*3,0). $1대상 셀에서 의 사용에 유의하십시오 . 사용되지 않으면 이것이 오프셋이 다른-cell에서 오프셋되므로 사실상 1승수에 추가 됩니다.

ADDRESS+의 INDIRECT접근 방식

ADDRESS두 개의 정수 입력을 받아 셀의 주소 / 이름을 꾸려 반환합니다. 예를 들어, ADDRESS(1,1)반환 "$A$1". INDIRECT셀의 주소를 받아 내용을 반환합니다. 예를 들어, INDIRECT("A1")셀의 내용을 반환합니다 A1( $'s가있는 입력도 허용 ). ROW내부 ADDRESS를 승수와 함께 사용하면 n 번째 셀마다 주소를 얻을 수 있습니다. 예를 들어, ADDRESS(ROW(), 1)행 1 "$A$1"에서는 반환하고 행 2에서는 반환 "$A$2"하는 식입니다. 따라서 이것을 안에 넣으면 INDIRECTN 번째 셀마다 내용을 얻을 수 있습니다. 예를 들어, INDIRECT(ADDRESS(1*ROW()*3,1))다음으로 끌면 첫 번째 열에있는 모든 세 번째 내용을 반환합니다.

스프레드 시트의 다음 스크린 샷을 고려하십시오. 헤더 (첫 번째 행)에는 아래 행에 사용 된 호출이 포함됩니다. 열에 는 예제 데이터가 포함되어 있습니다. 이 경우에는 양의 정수일뿐입니다 (계산은 외부 영역에서 계속됨). 3 분의 1마다 값입니다. 즉, 1, 4, 7, 10 등을 자합니다.여기에 이미지 설명 입력A

열에 접근 방식 B을 사용하려는 잘못된 시도가 OFFSET있지만 사용하는 것을 잊었습니다 $. 보시다시피를 곱하는 동안 3실제로 4 번째 행을 얻습니다.

열에 C를 사용하는 OFFSET것을 기억 $했지만 접근 방식 을 사용하려는 잘못된 시도 가 있습니다 . 따라서 세 번째 값을 모두 가져 오는 동안 일부 값 (1과 4)을 건너 뛰었습니다.

열에 접근 방식을 D사용하는 올바른 함수가 포함되어 있습니다 OFFSET.

열에 + 접근 방식 E을 사용하려는 시도가 있다는 것을 잊었습니다. 따라서 처음에 일부 행을 건너 뛰었습니다. 칼럼과 같은 문제 입니다.ADDRESSINDRECTC

열에 + 접근 방식을 사용하는 올바른 F함수가 있습니다 .ADDRESSINDRECT


새 열을 삽입하고 1,2,3,4 삽입을 넣습니다. 그런 다음 다른 새 열을 만들고 = if (int (a1 / 7) = (a1 / 7), 1,0) 명령을 사용합니다. 7 번째 행마다 1을 포함 1의 열을 필터링합니다.


7 번째 줄을 강조 표시합니다. 처음 7 줄의 형식을 몇 번 페인트 브러시합니다. 그런 다음 끝날 때까지 형식을 복사하는 더 큰 그림판을 수행하십시오. 7 번째 줄마다 강조 표시되어야합니다. 색상별로 필터링 한 다음 강조 표시된 셀에서 새 시트로 복사 및 붙여 넣기 (값 붙여 넣기)합니다.


매크로를 만들고 다음 코드를 사용하여 데이터를 가져와 새 시트 (Sheet2)에 넣습니다.

Dim strValue As String
Dim strCellNum As String
Dim x As String
x = 1

For i = 1 To 700 Step 7
    strCellNum = "A" & i
    strValue = Worksheets("Sheet1").Range(strCellNum).Value
    Debug.Print strValue
    Worksheets("Sheet2").Range("A" & x).Value = strValue
    x = x + 1
Next

도움이되는지 알려주세요! JFV


원본 데이터가 여러 열과 C42에있는 원본 데이터의 첫 번째 항목이있는 열 형식이고 새 (다운 샘플링 된) 데이터도 열 형식이지만 7 번째 행마 다만있는 경우 다음을 수행합니다. 또한 다음과 같이 첫 번째 항목의 행 번호를 빼야합니다.

=OFFSET(C$42,(ROW(C42)-ROW(C$42))*7,0)

새 열을 추가하고 오름차순 숫자로 채 방문합니다. 그런 다음 ([column] mod 7 = 0) 또는 이와 유사한 것이 필터링합니다 (실제로 시도하기 위해 Excel이 내 앞에 있지).

수식으로 필터링 할 수없는 경우 열을 하나 더 추가하고 여기에 수식 = MOD ([column; 7])을 사용할 다음 0을 필터링하면 7 번째 행이 모두 표시됩니다.

참조 URL : https://stackoverflow.com/questions/211062/copy-every-nth-line-from-one-sheet-to-another

반응형