Excel에서 각 n 번째 행을 선택하십시오.


15

수천 개의 행이있는 Excel 스프레드 시트가 있습니다. 해당 스프레드 시트에서 모든 7 번째 행을 선택하고 싶습니다. ""선택 "이란 다른 모든 행을 삭제하거나 선택한 행을 새 워크 시트에 복사하는 것을 의미합니다.

Excel 2003에서 가장 쉬운 방법은 무엇입니까?

참조 : 숫자에서 각 n 번째 행 선택

답변:


19
  1. 열 삽입
  2. 첫 번째 행에 수식 삽입 = MOD (ROW (), 7)
  3. 복사
  4. 특수 / 값 복사 / 붙여 넣기
  5. 원하는 데이터 / 필터 아웃 (0 또는 6)
  6. 나머지 행 삭제 필터 제거 열 삭제

나쁜 해결책은 아닙니다. 나는 내 매크로를 좋아하므로 이것이 첫 번째 선택이지만 약간의 노력으로도 효과가 있습니다.

2
= MOD (ROW (), 7) 두 번째 인수가 필요합니다.
dkusleika

3

개인적으로 처음 3 ~ 4 줄 (물론 7 행 단위로)을 수행하고 줄을 새 시트에 복사하는 매크로를 기록했습니다. 그런 다음 매크로를 편집하여 7 단계로 시트의 채워진 행 수를 계산하는 루프를 사용합니다.

의사 코드 예 :

Dim i as Integer

For i = 1 To 1000 Step 7
    'Add current row to selection
    ...
Next i

'Copy the selected rows to new sheet
...

매크로를 사용하는 경우 <code> <pre> Sub delrows () Dii i As Long For i = 988 To 1 Step -7 Sheet1.Cells (i, 1) .Offset (1, 0). (6) .EntireRow.Delete Next i End Sub </ pre> </ code> 행을 삭제하면 루프가 열리지 않습니다.
dkusleika

그는 삭제하지 않고 범위 개체에 행을 추가하기
만합니다 (

1
그는 "... 선택에 의해, 내 말은 다른 모든 행을 삭제"말한다
dkusleika

3

랜돌프 포터가 시작한 아이디어를 끝내는 것입니다 ....

기록을 위해, 당신이 기록을 통해 이것을 생각해 낼 수 있다고 생각하지 않습니다. 매크로 기록은 Excel 개체 모델에 익숙해지는 좋은 방법이지만 재사용 가능한 함수를 작성하는 좋은 방법은 아닙니다.

Option Explicit

'A simple test that copies every 7th row from the active sheet to a new sheet.
Sub SimpleTest()
    Dim r As Range
    Dim ws As Worksheet

    Set r = GetEveryNthRow(7)
    If Not r Is Nothing Then
        Set ws = Worksheets.Add(Before:=Sheets(1))

        r.Copy ws.Range("A1")
    Else
        MsgBox "Nothing came back from GetEveryNthRow"
    End If
    Set ws = Nothing
    Set r = Nothing
End Sub

'
Function GetEveryNthRow(ByVal NthRow As Long) As Range
    Dim keepRows As Range
    Dim r As Range

    If NthRow > 0 Then
        Set keepRows = Rows(1)
        For Each r In ActiveSheet.UsedRange.Rows
            If (r.Row Mod NthRow) = 0 Then
                Set keepRows = Union(keepRows, Rows(r.Row))
            End If
        Next r
        Set GetEveryNthRow = keepRows
    Else
        MsgBox "The row multiple provided must be greater than 0"
    End If

    Set keepRows = Nothing
End Function

재사용 가능한 개념에 당신과 함께.

3
  1. 열을 삽입하십시오.
  2. 첫 번째 행에을 삽입하십시오 1.
  3. 누른 상태에서 7 행으로 복사합니다 Ctrl.
  4. 그 블록을 잡고 끝까지 다시 똑같이하십시오.
  5. 원하지 않는 데이터 / 필터를 삭제하고 삭제하십시오.
  6. 삽입 된 열을 삭제하십시오.

답변 해주셔서 감사합니다. 3 단계에서 자세히 설명 할 수 있습니까? 마우스를 끄는 동안 Ctrl 키를 누른 상태입니까? 현재 Excel 2003에 액세스 할 수 없으므로 테스트 할 수 없습니다.
Patrick McElhaney

1

모든 7 번째 행을 선택하기 위해 더 쉬운 방법이 있습니다. 열의 처음 7 개 행에는 하나의 첫 번째 행에는 무언가를 씁니다. 그런 다음이 7 개의 행을 선택하고 전체 열에 복사하십시오. 이제 필요한 것은 선택-> 특별으로 이동-> 공백 선택-> 확인으로 이동하는 것입니다. 각 7 행마다 선택 항목이 있습니다. 이제 원하는 것을 할 수 있습니다. 즐겨!


0

7 번째 줄마다

  1. 열 삽입
  2. 1 행에서 6 행에 "X"
  3. 7 행에 1을 넣고
  4. 해당 블록으로 열을 자동 채우기
  5. 해당 열에서 "중복 제거"를 사용하십시오.
  6. 첫 번째 행을 삭제합니다 (첫 번째 "X"사용).
  7. 추가 된 열 삭제

슈퍼 유저에 오신 것을 환영합니다. 이것은 본질적으로 허용 된 답변과 땅콩으로 제안 된 방법이며 더 많은 작업 (및 파괴적)입니다. 그것이 무엇을 제공하는지는 확실하지 않습니다.
fixer1234

그것은 단지 다른 메뉴를 사용하고 있습니다. 제 생각에는 원래의 포스터 요청 ( "다른 모든 행을 삭제하십시오")보다 더 많은 작업이나 파괴적인 것이 아닙니다.
Ponch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.