구글 시트 · 엑셀 표 정리

병합 셀 풀고,
빈 칸 채우기

시트에서 표를 복사해 붙여넣으면, 병합 때문에 비어 있던 칸을 위(또는 왼쪽) 값으로 채워 줍니다. 정렬·필터가 걸리는 평평한 표가 됩니다. 입력한 내용은 이 브라우저 밖으로 나가지 않습니다.

병합칸마다 값

1표 붙여넣기

아직 붙여넣은 표가 없습니다.

2채울 열과 방향

빈 칸을 무엇으로 채울까요
이 열의 빈 칸을 채움 (자동 제안이 체크되어 있어요)

표를 붙여넣으면 열 목록이 나옵니다.

3결과

0칸 채움

결과 미리보기. 채운 칸은 점선 테두리와 「채움」 표시가 있습니다.
결과가 여기에 표시됩니다.

광고

왜 정렬이 막히나

병합된 셀이 있으면 정렬·필터가 뜻대로 되지 않을 수 있습니다. 병합은 여러 칸을 한 칸처럼 보이게 하지만, 값은 맨 왼쪽 위 칸 하나에만 들어 있습니다. 그래서 병합된 행은 정렬이 뜻대로 되지 않을 수 있고, 병합을 풀면 나머지 행의 그 열이 빈 칸으로 남을 수 있어 값으로 거르면 그 행들이 빠질 수 있습니다.

표를 복사하면 병합 셀의 값은 보통 첫 칸에만 나오고 덮여 있던 칸은 비어서 나옵니다(아직 재지 않음 — 붙여넣은 결과를 확인하세요). 이 빈 칸을 위(세로 병합) 또는 왼쪽(가로 병합) 값으로 채우면 행 하나하나가 스스로 완결된 평평한 표가 됩니다.

시트 안에서 직접 푸는 3가지 방법

  1. ① 이 도구로: 복사 → 붙여넣기

    시트에서 범위를 복사해 위 칸에 붙여넣고, 채울 열을 확인한 뒤 「결과 복사」를 누릅니다. 새 시트(또는 원래 자리)에 붙여넣으면 됩니다. 원래 자리에 붙이려면 먼저 그 범위의 병합을 해제하세요(병합 해제 메뉴는 서식 메뉴 아래의 셀 병합 항목에 있습니다).

    한계 병합 정보는 사라집니다. 서식·수식은 옮겨지지 않고 붙여넣은 글자만 옮겨집니다. 셀 안 줄바꿈은 보존됩니다.

  2. ② Apps Script: 병합 해제 + 값 채움

    확장 프로그램 메뉴에서 Apps Script 를 열고 아래 코드를 붙여넣어 저장합니다. 시트를 새로고침하면 「병합 도구」 메뉴가 생기도록 만든 코드이며, 범위를 선택한 뒤 「병합 해제 후 값 채우기」를 누르면 병합마다 왼쪽 위 값을 읽어 병합을 풀고 그 범위에 같은 값을 넣도록 만들었습니다. 처음 실행하면 권한 승인을 요청할 수 있습니다.

    /**
     * 병합 해제 + 값 채우기 (Google Apps Script)
     * 사용: 확장 프로그램 > Apps Script 에 붙여넣고 저장 → 시트를 새로고침하면 「병합 도구」 메뉴가 생기도록 만들었다.
     * 범위를 선택하고 「병합 해제 후 값 채우기」를 누른다. 먼저 시트 사본을 만들어 두는 것을 권한다.
     * 한계: 병합 정보 자체는 사라진다(되돌리려면 실행 취소 또는 사본). 수식이 든 병합 칸은 풀린 범위에 수식을 다시 넣는다(상대 참조가 어떻게 조정되는지는 아직 재지 않음).
     */
    function onOpen() {
      SpreadsheetApp.getUi()
        .createMenu('병합 도구')
        .addItem('병합 해제 후 값 채우기', 'unmergeAndFill')
        .addToUi();
    }
    
    function unmergeAndFill() {
      var range = SpreadsheetApp.getActiveRange();
      if (!range) {
        SpreadsheetApp.getUi().alert('먼저 범위를 선택하세요.');
        return;
      }
      // 선택 범위 안에 있거나 걸쳐 있는 병합 범위 전체
      var merged = range.getMergedRanges();
      if (merged.length === 0) {
        SpreadsheetApp.getUi().alert('선택한 범위에 병합된 셀이 없습니다.');
        return;
      }
      var cells = 0;
      merged.forEach(function (m) {
        var topLeft = m.getCell(1, 1);
        var formula = topLeft.getFormula();
        var value = topLeft.getValue();
        m.breakApart();
        if (formula) {
          m.setFormula(formula); // 풀린 범위에 수식을 다시 넣음(상대 참조 결과는 사본에서 확인)
        } else {
          m.setValue(value); // 풀린 범위에 왼쪽 위 값을 다시 넣음(실제 시트 결과는 사본에서 확인)
        }
        cells += m.getNumRows() * m.getNumColumns() - 1;
      });
      SpreadsheetApp.getActiveSpreadsheet().toast(
        '병합 ' + merged.length + '곳을 풀고 빈 칸 ' + cells + '개를 채웠습니다.',
        '병합 도구'
      );
    }
    

    한계 병합 정보는 사라지고, 되돌리려면 실행 취소나 사본이 필요합니다. 선택 범위에 걸친 병합은 범위 밖 부분까지 함께 풀릴 수 있습니다. 수식이 든 병합은 풀린 칸에 수식이 어떻게 들어가는지(상대 참조 조정 여부) 아직 재지 않았으니 결과를 확인하세요. 이 코드는 문법 검사만 했고 실제 시트에서의 실행 결과는 아직 재지 않았습니다. 사본에서 먼저 돌려 보세요.

  3. ③ 헬퍼 열 수식

    병합을 먼저 해제합니다. 값이 A열(2행부터)에 있고 비어 있는 D열을 헬퍼 열로 쓴다고 하면, D1 에 머리글(예: 「팀」)을 적고 D2 에 아래 수식을 넣은 뒤 표 끝까지 아래로 끌어 채웁니다.

    =IF(A2="",D1,A2)

    뜻: A2 가 비어 있으면 바로 위 헬퍼 칸(D1)의 값을, 아니면 A2 값을 씁니다. 위에서 아래로 이어지므로 빈 칸마다 가장 가까운 위 값이 들어갑니다. 그다음 D열을 복사해 A열에 값만 붙여넣기(Ctrl+Shift+V)로 붙이면 수식이 아닌 값으로 고정되고, 헬퍼 열은 지우면 됩니다.

    한계 세로 병합만 한 번에 한 열씩 처리합니다. 값만 붙여넣기 전에 헬퍼 열을 지우면 결과가 사라집니다. 완전히 빈 행도 위 값으로 채워 버리므로 빈 행은 먼저 지우세요.

자주 묻는 질문

붙여넣은 표가 어딘가로 전송되나요?

아니요. 계산은 이 페이지 안의 스크립트로만 하고, 이 도구는 입력값을 쿠키·로컬 저장소에 저장하거나 전송하지 않습니다. 페이지를 닫으면 사라집니다.

병합 모양을 다시 되돌릴 수 있나요?

이 도구의 결과에는 병합 정보가 없습니다. 병합된 원본이 필요하면 작업 전에 시트 사본(파일 메뉴의 사본 만들기)을 만들어 두거나, 시트의 실행 취소를 쓰세요.

빈 칸이 원래 비어 있어야 하는 칸이면요?

자동 제안은 「행에 다른 값이 있는데 그 열만 비어 있고 바로 위에 값이 있는」 열만 체크합니다. 비고처럼 원래 비는 열이 체크됐다면 체크를 풀면 됩니다. 결과 표에서 채운 칸은 점선 테두리로 표시됩니다.

완전히 빈 행은 왜 안 채우나요?

빈 행은 보통 구역을 나누는 줄이라 값을 지어내면 틀리기 쉽습니다. 그대로 두고 개수를 알려 드리니, 정렬 전에 지우세요. 빈 행 아래 첫 칸이 비어 있으면 그 칸도 채우지 않습니다.