programing

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

sourcejob 2023. 4. 24. 23:10
반응형

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

저는 1열 700줄짜리 엑셀 스프레드시트를 가지고 있습니다.일곱 번째 줄까지 신경써요관심 있는 각 행 사이에 있는 6개의 행을 삭제할 필요가 없습니다.그래서 제 해결책은 다른 시트를 만들고 제가 원하는 각 셀에 대한 참조를 지정하는 것이었습니다.

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

단, 각 식을 입력하고 싶지는 않습니다.'100번.세 개를 골라서 상자를 끌고 다니면 내가 뭘 하려는지 알 수 있을 줄 알았는데, 운이 없더라.

어떻게 하면 우아하고 효율적으로 할 수 있을까요?

새 시트의 A1에 다음과 같이 적습니다.

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

...복사합니다.행 1 이외의 장소에서 시작할 경우 ROW()를 행 1의 ROW(A1) 또는 기타 셀로 변경한 후 다시 아래로 복사합니다.

n번째 행이지만 여러 열을 복사하려면 다음 공식을 사용합니다.

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

이것도 바로 복사할 수 있어요.

내 생각에 이 질문에 대한 답변은 너무 구체적이다.다음은 두 가지 접근 방식과 완전한 예를 사용하여 보다 일반적인 답변을 제시하고자 하는 시도입니다.

OFFSET

OFFSET3번입니다.첫 번째 셀은 오프셋하려는 셀입니다.다음 두 가지는 간격띄우기를 원하는 행과 열의 수입니다(아래 및 오른쪽). OFFNET이 결과로 생성되는 셀의 내용을 반환합니다.를 들면, 「 」입니다.OFFSET(A1, 1, 2)합니다.C2A1 cell is cell(셀은 셀(셀))(1,1), 「」를 붙이면, 「이렇게」가 됩니다.(1,2)라고 하는 (2,3)합니다.C2.

을 다른 , 「n번째 행」을합니다.ROW 의 행 합니다.이 함수가 인수를 지정하지 않으면 현재 셀의 행 번호를 반환합니다. 우리가 합칠 수 요.OFFSET ★★★★★★★★★★★★★★★★★」ROW n번째 셀에서 .ROW를 들어.예를 들어.OFFSET(A$1,ROW()*3,0) 「 」의에 주의해 주세요.$1대상 세포에 있습니다.하지 않는 , 셀로부터 에, 는 「」가 추가됩니다.1곱셈기에 접속합니다.

ADDRESS+INDIRECT

ADDRESS는 2개의 정수 입력을 받아 셀의 주소/이름을 문자열로 반환합니다.를 들면, 「 」입니다.ADDRESS(1,1)"$A$1"INDIRECT는 셀의 주소를 가져와서 내용을 반환합니다.를 들면, 「 」입니다.INDIRECT("A1")합니다.A1 (할 수 있습니다)$가 포함되어 있습니다).를 사용하는 ROW에 inside inside inside ADDRESS곱셈기를 사용하면 모든 n번째 셀의 주소를 얻을 수 있습니다.를 들면, 「 」입니다.ADDRESS(ROW(), 1) 1행의 값이 됩니다."$A$1" 2행의 이 반환됩니다."$A$2"그래서 INDIRECT n번째셀의 을 알 수를 들면, 「 」입니다.INDIRECT(ADDRESS(1*ROW()*3,1))아래로 끌면 첫 번째 열에 있는 모든 세 번째 셀의 내용이 반환됩니다.

다음 스프레드시트의 스크린샷을 생각해 보십시오.헤더(첫 번째 행)에는 다음 행에서 사용되는 콜이 포함됩니다.여기에 이미지 설명 입력A에 샘플 데이터를 나타냅니다.이 경우 이는 양의 정수일 뿐입니다(계수는 표시된 영역 밖에서 계속됩니다).이것들은 우리가 매 3분의 1마다 얻고 싶은 값입니다.즉, 우리는 1, 4, 7, 10 등을 얻고 싶습니다.

[ ] B 사용 되어 있습니다.OFFSET(접근처)를 사용하는 $바와 같이 , by by by by by by by by를 3네 번째 줄마다 나옵니다.

[ ] C 사용 되어 있습니다.OFFSET $빼는 것을 잊었습니다.따라서 모든 세 번째 값은 얻지만 몇 가지 값(1과 4)은 건너뛰었습니다.

[ ] D에는 올바른 되어 있습니다.OFFSET★★★★★★ 。

[ ] E 사용 되어 있습니다.ADDRESS+INDRECT에 몇.그래서 처음에는 몇 개의 행을 건너뛰었습니다.C.

[ ] F에는 올바른 되어 있습니다.ADDRESS+INDRECT★★★★★★ 。

7번째 행마다 추출해야 할 경우 열 "A" 앞에 열을 "삽입"합니다. 그런 다음 (1행에 헤더 행이 있다고 가정하면) 2,3,4,7,8 행에 1,2,3,7,5,7을 입력합니다.결과는 1,23,4,5,6,7,1,2,3,4,6,7,1,2,3,4,6,7,1,2,3,4,5,7…이 됩니다.이제 데이터 정렬을 "A" 열에서 오름차순으로 수행합니다.1은 모두 시리즈 첫 번째가 되고 7은 모두 7번째가 됩니다.

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

일곱 번째 줄을 강조 표시합니다.처음 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

반응형