방대한 양의 데이터를 구글시트에 정리해두고
DB에 연결해서 사용하곤 하는데,
관리와 조회 차원에서도 편하고도록 셀 병합을 하려 했으나,
너무 많아서 일일이 하기 귀찮았다.
바로 매크로 만드는 방법 드간다.
1. 확장 프로그램 > Apps Script
2. 아래 첨부한 스크립트 붙여넣고 저장
/***** 선택영역에서 "연속된 동일값"만 병합 (여러 열 가능) *****/
function mergeSameInSelectionColumns() {
const sheet = SpreadsheetApp.getActiveSheet();
const sel = sheet.getActiveRange();
if (!sel) { SpreadsheetApp.getUi().alert('선택한 범위가 없습니다.'); return; }
const startRow = sel.getRow();
const endRow = sel.getLastRow();
const startCol = sel.getColumn();
const endCol = sel.getLastColumn();
// 병합 충돌 방지: 선택영역 내 병합 먼저 해제
sel.breakApart();
// 선택영역 값 한번에 읽기
const numRows = endRow - startRow + 1;
const numCols = endCol - startCol + 1;
const values = sheet.getRange(startRow, startCol, numRows, numCols).getValues();
// 비교 키: 공백·대소문자 무시(원치 않으면 toLowerCase/trim 부분 제거)
const keyOf = (v) => {
if (v === null || v === undefined) return '';
return String(v).trim().toLowerCase();
};
// 각 열별로 위→아래 스캔하며 연속 구간 병합
for (let c = 0; c < numCols; c++) {
let groupStart = 0; // 선택영역 내부 인덱스 기준
for (let r = 0; r <= numRows; r++) {
const cur = (r < numRows) ? keyOf(values[r][c]) : '__END__';
const next = (r + 1 < numRows) ? keyOf(values[r + 1][c]) : '__END__';
if (cur !== next) {
const len = r - groupStart + 1;
// 빈칸('') 제외 & 2행 이상만 병합
if (cur !== '' && len >= 2) {
const mergeStartRow = startRow + groupStart;
const mergeRange = sheet.getRange(mergeStartRow, startCol + c, len, 1);
mergeRange.merge();
mergeRange.setHorizontalAlignment('center')
.setVerticalAlignment('middle');
}
groupStart = r + 1;
}
}
}
SpreadsheetApp.getUi().alert('연속 동일값 병합 완료');
}
/***** 메뉴 등록 *****/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Merge Tools')
.addItem('선택영역 "연속 동일값" 병합', 'mergeSameInSelectionColumns')
.addToUi();
}
3. 구글시트에서 매크로 돌릴 범위 선택 > Merge Tools > 내가 설정한 이름의 매크로 선택
파일이 쥰내 많아서 약 3-4시간은 단축한 듯
ㄱㅇㄷ👍
'Log > etc.' 카테고리의 다른 글
Figma-Cursor MCP 연결 (0) | 2025.06.23 |
---|---|
Claude&Notion MCP 연결 (1) | 2025.06.23 |
매개변수(Parameter)와 전달 인자(Argument) 차이 (1) | 2024.10.14 |
Brew 경로문제 에러 (0) | 2024.10.07 |
Mac ARM64, X64 차이 (4) | 2024.10.07 |