Excel의 열에서 텍스트 행만 복사하는 방법은 무엇입니까?

Excel의 열에서 텍스트 행만 복사하는 방법은 무엇입니까?

나는 정기적으로 다음과 같은 파일에서 텍스트를 추출해야 합니다.

Excel의 파일 스크린샷

이상적으로는 두 가지 방법이 있습니다.

  1. 텍스트의 개별 행만

    예:
    실제로 출판물이 나왔습니다.

    이 데이터에 대해 우리는 다음 작업을 진행 중입니다.

    최근에 발표된 추가 데이터

  2. 단락 형식(Word, Google Docs 등에서 편집할 수 있는 단일 텍스트 블록으로 여러 행의 텍스트 결합)

    예:
    실제로 이 데이터에 대한 출판물이 있으며 최근에 발표된 더 많은 데이터에 대해 작업 중입니다.

파일을 받으면 모든 것이 A열에 있습니다. 필요하지 않은 두 행의 숫자가 있고 그 뒤에 꼭 필요한 텍스트 행이 있고 그 다음에는 빈 행이 있으며 그 이후에는 수천 행에 대해 패턴이 반복됩니다.

분명히 이 작업을 수동으로 수행하는 데는 시간이 오래 걸리므로 도움을 주시면 대단히 감사하겠습니다.

답변1

A 열의 세 번째 행(예: A3, A7, A10 ...)의 데이터를 추출해야 하는 것 같습니다.

먼저 B열의 처음 두 셀에 3, 7을 쓰고 아래로 드래그하여 3, 7, 10, 13과 같은 계열을 만들어주세요.

이제 C1에 =INDIRECT("A"&B1) 수식을 작성하면 A3 셀의 텍스트가 표시됩니다. A7, A10 등의 텍스트를 표시하려면 수식을 아래로 복사하세요.

여기에 이미지 설명을 입력하세요

모든 텍스트를 결합하려면 Excel 2016이 있는 경우 CONCAT 또는 TEXTJOIN 함수를 사용할 수 있습니다. TEXTJOIN의 장점은 텍스트 사이에 공백이나 쉼표와 같은 구분 기호를 사용할 수 있다는 것입니다. 빈 셀을 무시할 수도 있습니다. 다음 예에서는 공백이 구분 기호로 사용되었으며 True가 빈 셀을 무시하는 데 사용되었습니다.

=TEXTJOIN(" ",TRUE,C1:C11)

이전 버전에서는 CONCATENATE 함수를 사용할 수 있지만 모든 셀 참조를 하나씩 작성해야 합니다.

=CONCATENATE(C1,C2,C3,C4,C5,C6,C7,C8).  

답변2

나는 코드를 작성하지 않고도 이 작업을 수행할 수 있는 쉬운 방법은 없다고 생각합니다. 아마도 Excel에서 VBA를 사용하여 수행할 수 있지만 이에 대한 경험이 많지 않습니다.

다음은 Python에서 이를 수행하는 방법의 예입니다. 이 스크립트는 주어진 열의 셀을 살펴보고 숫자로 시작하지 않는 경우 파일에 값을 인쇄합니다.

엑셀 시트:

샘플 엑셀 시트 사진

산출:

Here's the first string and the second now a third

암호:

from openpyxl import load_workbook # package for working with xls files
import re # regex package

workbookName = 'test.xlsx'
sheetName = 'Sheet1'
column = 'A'
maxRow = 50
outputFile = 'excelOutput.txt'

# Open the workbook
wb = load_workbook(workbookName)
# Create a file to put the data into
fh = open(outputFile, 'w')

# Loop through all the rows
for kk in range(1,maxRow):
    # Grab the cell's value
    cellValue = wb[sheetName][column+str(kk)].value
    # If the cell isn't empty
    if cellValue != None:
        # If the cell doesn't start with a number
        if not re.search("\\d",str(cellValue)[0]):
            # Write the value from the cell into the text file
            fh.write(cellValue)
# Close the file
fh.close()

답변3

범위에서 원하지 않는 행 삭제를 단순화하려면 먼저 정렬하여 f.ex. 모든 빈 행은 함께 그룹화됩니다. 내장된 셀 정렬을 사용하는 것은 다소 간단하지만 텍스트의 초기 순서를 유지하려면 몇 가지 추가 단계가 필요합니다.

A1:A200예를 들어 귀하의 데이터가 범위 내에 있다고 언급하겠습니다 . 필요에 따라 실제 데이터에 맞게 조정하세요.

  1. 1셀에 숫자를 삽입 하고 셀에 B1숫자를 삽입 합니다 . 셀을 선택 하고 , 함수 를 적용하여 열에 1~200이 되도록 합니다 . 나중에 이는 텍스트를 초기 순서대로 반환하는 데 도움이 됩니다.2B2B1:B200filllinearB

  2. 범위를 선택 A1:B200하고 정렬을 적용합니다. 이제 시간 프레임 행, 텍스트 행 및 빈 행뿐만 아니라 숫자 행도 함께 그룹화됩니다. 따라서 유지하지 않으려는 행을 쉽게 선택하고 제거할 수 있습니다. 원하지 않는 행을 삭제한 후에 A1:B50는 텍스트와 원래 행 번호를 열에 포함하는 범위가 있어야 합니다 B.

  3. 텍스트의 올바른 순서를 복원하려면 범위를 선택 A1:B50하고 열을 기준으로 정렬하세요 B.

추가 처리를 위해 텍스트를 복사하려면 Word선택하여 복사하여 붙여넣습니다 Word. 테이블 형식을 제거하고 행을 검색 및 바꾸기( paragraph로 검색 및 바꾸기 space)로 연결합니다.

관련 정보