반응형
코딩으로 시간 벌기 / 엑셀 VBA

드롭다운 목록, 매크로로 자동 업데이트하기! 🔽

물류아재 칵칵 · 엑셀 VBA 시리즈 4편

안녕하세요, 물류와 코딩 사이의 경계에서 성장하고 있는 물류아재 칵칵입니다. 😊

물류 현장에서 가장 골치 아픈 것 중 하나가 바로 데이터 오타입니다. 누군가는 '경동사'라 쓰고 누군가는 '경동사(주)'라고 쓰면, 나중에 피벗 테이블을 돌릴 때 데이터가 찢어져서 고생하게 되죠. 이를 막기 위해 우리는 '데이터 유효성 검사'를 통해 드롭다운 목록을 만듭니다.

하지만 품목이 수백 개씩 추가될 때마다 매번 범위를 수정해주고 계신가요? 오늘은 새로운 품목이 추가되어도 자동으로 드롭다운 목록을 업데이트해주는 자동 유효성 검사 매크로를 만들어 보겠습니다.


왜 이 매크로가 필요할까요? 🛠️

📦 실제 물류 업무 사례
새로운 거래처가 입점할 때마다 '입고 등록' 시트의 거래처 선택 목록을 수동으로 늘려주고 있습니다.
VBA를 이용하면 기초 정보 시트에 데이터만 추가하면 등록 시트의 드롭다운이 실시간으로 바뀝니다.

자동 드롭다운 생성 매크로 코드

아래 코드는 특정 시트의 리스트를 가져와서 원하는 범위에 드롭다운 목록을 즉시 만들어줍니다.

Sub CreateAutoDropdown()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim listRange As String

    Set wsSource = Sheets("기초정보") '목록이 있는 시트 이름
    Set wsTarget = ActiveSheet        '드롭다운을 만들 현재 시트
    
    '1. 기초정보 시트의 마지막 행 찾기 (A열 기준)
    lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row
    
    '2. 드롭다운에 들어갈 범위 문자열 만들기
    listRange = "='기초정보'!$A$2:$A$" & lastRow

    '3. 선택한 범위에 유효성 검사(드롭다운) 적용
    With Selection.Validation
        .Delete '기존 설정 삭제
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=listRange
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "입력 오류"
        .ErrorMessage = "목록에 없는 항목입니다. 정확히 선택해주세요!"
        .ShowInput = True
        .ShowError = True
    With
    
    MsgBox "드롭다운 목록 업데이트 완료!"
End Sub

사용 방법 🚀

  • '기초정보'라는 이름의 시트를 만들고 A열에 드롭다운에 넣을 리스트를 작성합니다.
  • 드롭다운을 만들고 싶은 셀 범위를 마우스로 선택합니다.
  • Alt + F8을 눌러 CreateAutoDropdown 매크로를 실행합니다.
  • 이제 목록이 바뀌어도 매크로만 한 번 실행하면 범위가 자동으로 조정됩니다!
💡 고수의 한 끗 차이
이 코드를 Worksheet_Activate 이벤트에 넣어두면, 해당 시트를 클릭할 때마다 매크로가 알아서 실행되어 버튼조차 누를 필요 없는 완벽한 자동화가 가능합니다.

막히는 부분 해결하기 🚨

Q. 시트 이름을 바꾸고 싶어요!
코드의 Sheets("기초정보") 부분의 이름을 현재 사용 중인 시트 이름과 똑같이 맞춰주면 됩니다. 띄어쓰기 하나라도 다르면 오류가 나니 주의하세요!

오타 없는 깔끔한 데이터 관리는 모든 자동화의 시작입니다. 오늘 배운 드롭다운 자동화로 데이터 수집 단계부터 에러를 원천 차단해 보세요!

다음 시간에는 "여러 개의 엑셀 파일을 하나로 합치는 마법의 매크로"를 소개해 드릴 예정입니다. 많은 기대 부탁드립니다! 😊

반응형
반응형

소설로 읽는 고려사 (7편)

날카로운 칼은 주인의 등 뒤를 노린다 — 이자겸의 최후 (2부)

소설로 만나는 역사
📖 지난 이야기 — 1부에서 이자겸은 어린 인종을 왕위에 올리고 자신의 딸들을 왕비로 들이며 사실상 고려의 황제처럼 군림했습니다. '십팔자위왕(十八子爲王)'이라는 예언을 품에 안고, 그는 1126년 궁궐에 불을 질러 인종의 왕권을 짓밟았습니다. 불타는 개경. 잿더미 위에 선 이자겸. 그러나 그는 몰랐습니다. 가장 날카로운 칼은 언제나 주인의 등 뒤를 노린다는 것을.

불이 꺼진 개경은 더 무서웠다.

연기가 걷히고 남은 것은 궁궐의 검은 뼈대와, 잿가루가 된 기와 조각들이었다. 왕 인종은 장인인 이자겸의 사저 한쪽 방에 머물렀다. 밥은 그의 사람들이 날라다 줬다. 출입은 그의 사람들이 감시했다. 고려의 왕이 신하의 집에서 연금 생활을 하는, 전례 없는 굴욕의 나날이었다.

이자겸의 사저는 그러나 정작 조용하지 않았다. 매일 밤 청사초롱이 걸리고 수레가 드나들었다. 신하들이 고개를 조아렸고 선물 꾸러미가 산을 이뤘다. 불타버린 궁궐 따위는 아무래도 상관없다는 듯, 이자겸의 세상은 여전히 화려하게 돌아가고 있었다.

그 화려함 속에서, 척준경(拓俊京)은 혼자 술잔을 비우고 있었다.

✦ ✦ ✦

척준경은 고려 최고의 무장이었다. 여진 정벌부터 수십 번의 전투까지, 그가 칼을 뽑아 들면 적의 진영이 무너졌다. 이자겸의 오른팔이 된 것도 그 무력 때문이었다. 이자겸의 명이라면 척준경은 움직였다. 궁궐에 불을 지르는 일도, 왕의 측근을 베는 일도.

그런데 그날 밤, 궁궐을 불태우던 그날 밤, 척준경의 형제들이 죽었다.

반대파의 칼에 맞아 죽은 것이었다. 전장에서 죽은 것도 아니고, 주군을 위해 칼을 든 날 밤에, 그의 가족이 피를 흘린 것이다. 이자겸은 승리의 술잔을 들었지만, 척준경에게 그날은 승리가 아니었다. 자신이 불을 지른 궁궐의 재 속에 형제의 이름이 묻혀버린 날이었다.

이자겸은 눈치채지 못했다. 아니, 알면서도 대수롭지 않게 여겼다. 척준경은 칼이었다. 칼은 주인에게 충성한다. 그렇게 믿었다.

✦ ✦ ✦

방 안에 갇힌 인종은 열일곱이었지만, 어리석지 않았다.

그는 매일 밤 이자겸의 감시 속에서도 작은 틈을 찾아 눈을 굴렸다. 자신을 지키는 자들의 표정. 이자겸을 찾아오는 자들의 목소리. 그리고 척준경의 침묵. 그 침묵이 무엇을 뜻하는지, 인종은 서서히 읽어나가기 시작했다.

'저 자는 지금 기울고 있다.'

인종은 믿을 수 있는 내관을 불렀다. 목소리를 낮게 깔고 말했다.

"척준경에게 전하라. 내가 직접 쓴 밀서다."

"전하, 이것이 발각되면 목숨이—"

"내가 이대로 있어도 목숨은 없다."

밀서는 몇 번의 손을 거쳐 척준경의 손에 닿았다. 내용은 짧았다.

장군의 충심이 이자겸의 칼로 소모되고 있소.
그대의 형제를 앗아간 것이 누구의 명이었는지 잊지 마시오.
나라를 구하는 일에는 반드시 상이 따를 것이오.

척준경은 밀서를 읽고 오래 불을 바라봤다. 그리고 천천히 밀서를 불 속에 던졌다.

그날 이후, 척준경의 눈빛이 달라졌다.

✦ ✦ ✦

1126년 5월의 어느 아침, 이자겸은 여느 때처럼 관복을 갖춰 입고 입궐했다.

화창한 날이었다. 궁문을 지나는 그의 걸음에는 여전히 세상을 짓밟는 자의 무게가 실려 있었다. 수행원들이 좌우를 채웠고, 관리들이 허리를 굽혔다. 이자겸은 그것이 당연하다는 듯 시선도 주지 않고 걸었다.

내전으로 가는 길목에서, 그는 발걸음을 멈췄다.

앞에 척준경이 서 있었다. 혼자가 아니었다. 그의 뒤로 갑옷을 입은 병사들이 통로를 가득 메우고 있었다. 햇살에 갑옷의 쇳빛이 번쩍였다. 이자겸은 눈을 가늘게 떴다.

"척준경, 이게 무슨 짓이냐."

척준경은 대답하지 않았다. 그는 천천히 칼집에서 칼을 뽑았다. 쇳소리가 복도에 울렸다. 그리고 고개를 들어 이자겸을 똑바로 바라봤다. 25년을 함께한 눈빛이었다. 그러나 그 눈에는 이제 주인을 향한 충성이 없었다.

"전하의 명을 받들어 역적 이자겸을 체포한다."

이자겸의 얼굴에서 핏기가 가셨다.

수행원들이 겁을 먹고 흩어졌다. 달아나는 자도 있었고 그 자리에 무릎을 꿇는 자도 있었다. 이자겸은 뒤를 돌아봤다. 아무도 없었다. 방금 전까지 허리를 굽히던 자들이 모두 사라져 있었다.

권세라는 것은 그런 것이었다. 조금 전까지 그를 떠받치던 사람들이 칼 한 자루 뽑히는 소리에 먼지처럼 흩어졌다.

이자겸은 걸음을 뒤로 옮겼다. 한 걸음, 두 걸음. 그러나 등 뒤에도 이미 병사들이 벽을 이루고 있었다. 그는 사방이 막혀 있었다.

"척준경! 네 이놈, 나를 배신하느냐! 내가 너를 어떻게 키웠는데—"

척준경은 그 말을 끝까지 듣지 않았다. 그는 병사들에게 눈짓했다. 병사들이 달려들었다. 고려 최고의 권세가, 최고의 무장의 손에 의해 끝나는 순간이었다.

✦ ✦ ✦

이자겸은 전라도 영광으로 유배되었다.

개경에서 그토록 화려하게 누렸던 것들이 하루아침에 사라졌다. 80칸 저택도, 썩어 넘치던 고기도, 굽실거리던 신하들도. 남은 것은 서해 바람이 부는 낯선 땅과, 소금에 절인 조기 한 마리뿐이었다. 유배지에서 그 조기를 먹으며 이자겸은 무슨 생각을 했을까. 십팔자위왕의 예언은 결국 그의 손에서 이루어지지 않았다.

그는 영광에서 쓸쓸히 죽었다. 기록에는 그의 최후조차 짧게 남아 있을 뿐이다.

개경의 하늘에는 불탄 궁궐의 그을음이 한동안 걷히지 않았다. 이자겸은 사라졌지만, 그가 남긴 상처는 남았다. 민심은 술렁였다. 백성들은 수군거렸다.

'개경은 기운이 다했다. 이 도성에서는 더 이상 희망이 없다.'

그 술렁임을 타고, 대동강 물결을 거슬러 한 승려가 개경으로 걸어오고 있었다. 풍수지리에 통달하고, 말빨이 날카로우며, 눈빛이 비범한 사내. 그의 이름은 묘청(妙淸)이었다.

📚 한능검 핵심: 이자겸의 난 마무리 + 시험 총정리

1. 이자겸의 몰락 — 흐름 정리

단계 내용
권력 절정 3명의 딸을 왕비로, 외손자 인종을 왕위에 올리며 사실상 고려 최고 권력자
난의 발생 인종의 제거 시도 실패 → 이자겸·척준경이 궁궐을 불태우고 인종을 연금
균열 척준경의 가족이 난 과정에서 희생 → 척준경의 내면 이탈
인종의 이간책 인종이 밀서로 척준경을 회유
최후 척준경이 이자겸을 체포 → 전라도 영광 유배 → 사망

2. 이자겸의 난 역사적 의의 ★★★★★

  • 문벌 귀족 사회의 붕괴 신호탄: 가문의 힘으로 왕권을 압도하는 체제의 모순이 폭발적으로 드러남.
  • 개경 길지설 흔들림: 궁궐이 불타자 "개경의 기운이 다했다"는 서경 길지설이 힘을 얻으며 묘청의 서경 천도 운동으로 이어짐.
  • 금(金)에 대한 사대 수용: 이자겸이 자신의 권력 유지를 위해 금나라의 군신 요구를 받아들임 → 자주 세력의 반발 심화.
  • 척준경 역시 몰락: 이자겸을 제거한 척준경도 정지상 등의 탄핵으로 이듬해 유배. 칼을 가진 자도 결국 역사의 흐름을 거스를 수 없었음.

3. 6편 전체 흐름 한눈에 정리

구분 1부 2부
핵심 사건 이자겸의 권력 독점, 궁궐 방화 척준경의 배신, 이자겸 체포·유배
주요 인물 이자겸, 인종 척준경, 인종, 이자겸
키워드 십팔자위왕, 문벌귀족, 금 사대 이간책, 영광 유배, 개경 길지설 붕괴
⚠️ 시험 함정 주의!
① 이자겸을 제거한 것은 인종이 직접 군사를 일으킨 것이 아니라 척준경을 이용한 이간책입니다.
② 척준경도 이자겸 제거 직후 정지상 등의 탄핵으로 유배됩니다. "척준경이 이자겸 이후 권력을 잡았다"는 선택지는 오답입니다.
✏ 암기 구호
"이자겸 → 난 → 궁궐 방화 → 척준경 배신 → 영광 유배"
척준경도 → 정지상 탄핵 → 유배!
결과: 문벌 붕괴 + 서경 길지설 부상 → 묘청으로 이어짐

이자겸은 권력의 정점에서 가장 믿었던 사람의 손에 무너졌습니다. 그리고 그것은 단순히 한 외척의 몰락이 아니었습니다. 고려 문벌 귀족 사회가 스스로 자신의 모순을 폭발시킨 순간이었습니다.

불탄 궁궐, 흔들린 왕권, 흉흉한 민심. 그 위로 한 승려가 목소리를 높입니다. "개경은 기운이 다했다. 서경으로 가야 고려가 산다." 풍수지리와 자주 국방을 무기로 등장한 묘청. 그는 과연 시대의 선지자였을까요, 아니면 또 다른 야망가였을까요.

📌 다음 편에서는 고려사 최대의 논쟁,
「묘청의 서경 천도 운동: 풍수지리와 자주 국방의 꿈」으로 찾아뵙겠습니다.
반응형
반응형
코딩으로 시간 벌기 / 엑셀 입문

수식 복사의 공포, $ 기호 하나로 해결하는 '절대참조'

물류아재 칵칵 · 엑셀 기초 시리즈 5편

분명 첫 번째 칸에는 수식을 잘 넣었습니다. 결과값도 완벽했죠. 기분 좋게 셀 오른쪽 아래 모서리를 잡고 아래로 '촤르륵' 드래그했습니다. 그런데 이게 웬걸? 아래로 갈수록 수치가 이상해지더니 급기야 #N/A#VALUE! 에러가 화면을 가득 채웁니다.

"어라? 수식은 그대로 복사됐는데 왜 이러지?"라며 당황하는 사이, 보고서 제출 시간은 다가옵니다. 엑셀 초보자와 숙련자를 가르는 결정적인 차이, 바로 $(달러) 기호의 마법을 모르기 때문에 벌어지는 비극입니다. 오늘은 데이터의 위치를 꽉 잡아주는 절대참조에 대해 알아보겠습니다.


상대참조 vs 절대참조, 차이가 뭔가요? 🤔

🏃 상대참조 (기본값)
"내 옆에 있는 칸이랑 저 위에 있는 칸을 더해!"라고 기억합니다. 수식을 아래로 한 칸 복사하면, 참조하는 칸들도 같이 아래로 한 칸 내려갑니다.
📌 절대참조 ($ 기호 사용)
"내가 어디로 이사가든, 무조건 [A1] 칸에 있는 값만 가져와!"라고 못을 박는 것입니다. 수식을 어디로 복사해도 참조 위치가 변하지 않습니다.

언제 절대참조를 써야 할까? 💡

주로 '변하지 않는 기준값'을 참조할 때 필수적으로 사용합니다.

상황고정해야 할 대상이유
환율 계산 환율이 적힌 단일 셀 모든 행이 똑같은 환율을 써야 하니까
VLOOKUP 참조할 전체 표 범위 수식을 내려도 원본 표 위치는 그대로여야 하니까
백분율(%) 계산 전체 합계 셀 각 항목을 항상 '전체 합계'로 나눠야 하니까

절대참조를 만드는 가장 쉬운 방법 🚀

일일이 키보드로 $ 기호를 타이핑하고 계셨나요? 이제 F4 키 하나만 기억하세요.

  • 수식을 입력하다가 고정하고 싶은 셀 주소(예: A1)를 클릭합니다.
  • 그 상태에서 키보드 상단의 [F4] 키를 한 번 누릅니다.
  • 주소가 $A$1로 바뀌는 것을 확인합니다. (행과 열이 모두 잠겼습니다!)
  • 한 번 더 누르면 A$1(행 고정), 또 누르면 $A1(열 고정) 순으로 바뀝니다.

🚨 실무에서 가장 많이 하는 실수

VLOOKUP에서 범위를 고정 안 했을 때
첫 줄은 성공하지만, 수식을 아래로 복사할수록 '원본 표 범위'도 같이 밑으로 밀려 내려갑니다. 결국 나중에는 원본 표 범위를 벗어나 데이터를 찾지 못하고 에러가 나게 됩니다. VLOOKUP의 범위는 무조건 F4! 잊지 마세요.

수식 안에 있는 $ 기호는 단순히 돈을 의미하는 것이 아니라, 여러분의 데이터를 지켜주는 '자물쇠'입니다. 수식을 복사하기 전, "내가 참조하는 이 범위가 같이 움직여도 되는가?"를 딱 한 번만 고민해 보세요. 그 습관이 여러분을 에러의 늪에서 구해줄 것입니다. 💪

반응형
반응형

진리를 쫓는 자들 (1편)

만물의 근원을 찾아서 — 피타고라스의 방랑

A Mathematician's Story

기원전 532년, 에게해의 한 항구 도시에서 한 청년이 짐을 꾸렸다.

사모스 섬. 포도주 빛 바다가 삼면을 감싼 이 섬에서 피타고라스(Pythagoras)는 태어났고, 자랐고, 이제 떠나려 하고 있었다. 짐이라고 해봤자 낡은 파피루스 뭉치 몇 묶음과 탈레스 선생에게서 받아 적은 노트 한 권이 전부였다. 그는 스물다섯이었다.

부두에 나온 어머니가 물었다.

"어디까지 가려는 것이냐."

"모르겠어요."

"언제 돌아오느냐."

"그것도 모르겠어요."

어머니는 아들의 얼굴을 오래 바라봤다. 그리고 한숨을 쉬며 손에 쥐고 있던 올리브 가지를 건네줬다. 피타고라스는 그것을 받아 들고 배에 올랐다. 배가 서서히 부두에서 멀어졌다. 그는 뒤를 돌아보지 않았다.

그의 머릿속에는 오래된 질문 하나가 못처럼 박혀 있었다.

세상은 무엇으로 이루어져 있는가.
그리고 그것을 지배하는 법칙은 과연 존재하는가.

당시의 그리스는 신화의 시대였다. 천둥이 치면 제우스가 노한 것이고, 바다가 성을 내면 포세이돈의 변덕이었다. 탈레스 선생은 달랐다. 그는 "만물의 근원은 물"이라고 말했다. 신이 아니라 자연 자체에서 답을 찾으려 한 최초의 인간이었다. 피타고라스는 그 가르침에 매료됐지만 만족하지 못했다.

'물? 그렇다면 왜 하필 물인가. 물을 물답게 만드는 더 깊은 무언가가 있지 않은가.'

그 답을 찾기 위해, 그는 세상 끝까지 가기로 했다.

✦ ✦ ✦

첫 행선지는 이집트였다.

나일강은 매년 범람했다. 강이 불어났다가 빠지고 나면 농부들의 경계선이 흔적도 없이 사라졌다. 수천 년 전부터 이집트는 이 문제를 해결하기 위해 기사(技士)들을 길러냈다. 그들은 '밧줄 치기꾼(Harpedonaptai)'이라 불렸다.

피타고라스는 어느 날 그들의 작업을 구경하다 발걸음을 멈췄다.

한 기사가 열두 개의 매듭이 있는 밧줄을 꺼내더니, 세 사람에게 나눠 쥐게 했다. 3칸, 4칸, 5칸. 팽팽하게 당기자 땅 위에 삼각형이 만들어졌다. 기사가 말했다.

"이게 직각이오."

피타고라스는 눈을 가늘게 떴다. 직각기 하나 없이, 계산 한 번 없이, 그냥 밧줄 하나로 완벽한 직각을 만들어낸 것이다. 그는 쪼그리고 앉아 삼각형을 한동안 들여다봤다.

"왜 3, 4, 5입니까? 다른 숫자는 왜 안 됩니까?"

기사는 어깨를 으쓱했다. "우리 할아버지 때부터 그랬소. 그냥 그런 거요."

그냥 그런 거요.

피타고라스는 그날 밤 파피루스를 꺼내 수를 적기 시작했다. 3의 제곱은 9. 4의 제곱은 16. 합하면 25. 그리고 5의 제곱은…

25.

그는 손에 쥔 갈대 펜을 내려놓았다. 숨이 멎는 느낌이었다. 우연이 아니었다. 수천 년간 이집트 기사들이 경험으로만 알고 있던 그것에, 숫자의 언어로 된 법칙이 숨어 있었다. 그들은 법칙을 사용하면서도 그게 법칙인 줄 몰랐던 것이다.

'수(數)가 먼저였다. 모든 것보다.'

✦ ✦ ✦

이집트에서 10년, 바빌로니아에서 5년.

바빌로니아의 천문학자들은 밤하늘을 숫자로 읽었다. 행성의 위치, 일식의 주기, 달의 차고 기움. 모든 것에 숫자가 있었고, 그 숫자들은 규칙적으로 반복됐다. 피타고라스는 밤마다 그들 옆에 앉아 흙판에 수를 새겼다. 음악을 공부하던 어느 날 밤에는 현(絃)의 길이와 음의 높낮이 사이에 정확한 수적 비율이 존재한다는 사실을 발견하고 새벽까지 잠을 이루지 못했다.

세상은 아름다웠다. 아름답게도, 모든 것이 숫자로 되어 있었다.

20여 년의 방랑 끝에 그가 이탈리아 남부 크로톤에 닿았을 때, 그는 더 이상 청년이 아니었다. 머리카락에 흰색이 섞였고, 얼굴에는 지중해의 햇살과 사막의 모래바람이 새겨져 있었다. 그러나 눈빛은 오히려 더 예리해져 있었다. 사모스를 떠날 때부터 품어온 그 질문이 이제 답에 가까워져 있었다.

크로톤에서 그는 문을 열었다. 배우고 싶은 자는 누구든 오라고 했다. 남자도 여자도, 귀족도 평민도. 당시로서는 파격적인 선언이었다. 사람들이 모여들었다. 피타고라스는 처음 만나는 제자들에게 항상 같은 말로 수업을 시작했다.

"만물은 수(數)다.
신이 세상을 만들었다면, 신이 사용한 언어는 숫자였다."

학파가 태어났다. 그들은 콩을 먹지 않았고, 흰 옷을 입었으며, 밤마다 함께 수를 공부하고, 발견한 진리를 외부에 발설하지 않겠다는 맹세를 했다. 기묘하고도 순수한 집단이었다. 세상이 그들을 비웃었다. 수학이 무슨 신앙이냐고.

그러나 피타고라스는 알고 있었다.

혼돈처럼 보이는 이 세상 어딘가에, 절대 변하지 않는 규칙이 있다는 것을. 그리고 그 규칙은 누군가가 발명하는 것이 아니라, 발견되기를 기다리고 있다는 것을.

그는 그것을 찾으러 왔다.

그리고 찾았다.

📐 수학 파트: 피타고라스가 발견한 세계

1. 피타고라스 이전의 수학 — 왜 그의 등장이 혁명인가

이집트와 바빌로니아에도 수학은 있었습니다. 하지만 그것은 어디까지나 실용 수학이었어요. "3:4:5 밧줄로 직각을 만든다"는 것은 경험으로 알았지만, 왜 그런지는 몰랐습니다. 피타고라스는 처음으로 "왜?"를 물었고, 그 답을 논리적으로 증명하려 했습니다. 이것이 논증 수학의 시작입니다.

구분이집트·바빌로니아피타고라스 이후 그리스
수학의 목적농지 측량, 건축, 세금 계산진리 탐구, 논리적 증명
방식경험과 암기 ("이렇게 하면 된다")공리와 논증 ("왜 그런가")
결과물공식집, 표정리(Theorem)와 증명

2. 피타고라스 정리 — 핵심 개념 정리

📌 피타고라스 정리
  • 내용: 직각삼각형에서 직각을 낀 두 변의 길이를 a, b, 빗변을 c라 하면 a² + b² = c² 이 성립한다.
  • 가장 유명한 예: 3² + 4² = 9 + 16 = 25 = 5². 즉 (3, 4, 5)는 직각삼각형을 이룬다.
  • 역도 성립: a² + b² = c²이 성립하면 그 삼각형은 반드시 직각삼각형이다.
  • 중요성: 좌표계의 두 점 사이 거리, 삼각함수, 벡터, 물리학 공식 등 현대 수학·과학 전반의 뼈대.

3. 피타고라스 학파가 발견한 것들

피타고라스 학파의 업적은 삼각형 하나에 그치지 않습니다. 그들은 숫자 자체를 탐구하며 수학의 기초를 여러 방향으로 넓혔습니다.

발견내용의의
피타고라스 정리a² + b² = c²기하학·대수학의 연결
음악과 수의 비율현의 길이 1:2 → 옥타브, 2:3 → 완전5도음악 이론의 수학적 기초
완전수 개념자기 자신을 제외한 약수의 합 = 자기 자신 (예: 6 = 1+2+3)정수론의 출발점
홀수·짝수 분류수의 성질을 체계적으로 분류하기 시작수론의 기초 확립
⚠️ 피타고라스가 직접 증명했는가?
피타고라스 정리는 그보다 1,000년 앞서 바빌로니아 점토판에도 등장합니다. 피타고라스의 진짜 공헌은 이를 처음 발견한 것이 아니라, 논리적으로 증명(Proof)한 것입니다. "그냥 그런 거요"를 "왜냐하면"으로 바꾼 것, 그것이 혁명이었습니다.

4. 수학사적 의미 — 왜 피타고라스에서 시작하는가

수학의 역사를 피타고라스에서 시작하는 이유는 단순히 그가 유명해서가 아닙니다. 그는 인류 최초로 수학을 진리 탐구의 도구로 격상시킨 사람입니다. 그 전까지 수는 곡식을 세고 땅을 나누는 실용 도구였습니다. 피타고라스 이후, 수는 우주를 이해하는 언어가 되었습니다.

CORE INSIGHT
피타고라스의 질문: "왜 그런가?"
그 질문이 경험을 증명으로, 실용을 진리로 바꿨다.

a² + b² = c² — 세상에서 가장 유명한 직각삼각형의 법칙
논증 수학의 시작, 현대 수학·물리학·공학의 뿌리

피타고라스에게 수학은 도구가 아니었습니다. 그것은 신앙이었고, 세상을 읽는 유일한 언어였습니다. 스물다섯에 배를 탄 청년은 20년의 방랑 끝에 하나의 확신을 품고 돌아왔습니다. 혼돈처럼 보이는 세상에 질서가 있고, 그 질서는 수(數)의 언어로 쓰여 있다는 것.

하지만 완벽해 보이던 그의 수의 왕국에도 곧 균열이 찾아옵니다. 그들이 절대 존재할 수 없다고 믿었던 숫자. 발견한 제자를 물에 빠뜨렸다는 전설까지 생겨난 그 금기의 숫자가 수면 위로 떠오릅니다.

📌 다음 편 주제
「진리를 쫓는 자들 (2편): 신이 버린 숫자 — 무리수의 비극」
√2를 발견한 히파수스는 왜 바다에 던져졌는가.
피타고라스 학파를 뒤흔든 최대의 위기, 그리고 수학의 세계가 영원히 달라진 날.
반응형
반응형
코딩으로 시간 벌기 / 엑셀 VBA

세 번째 이야기: 색깔별 정렬, 클릭 한 번으로 끝내기! 🎨

물류아재 칵칵 · 엑셀 VBA 시리즈 3편

안녕하세요, 물류와 코딩 사이의 경계에서 성장하고 있는 물류아재 칵칵입니다. 😊

지난 1, 2편에서는 색깔이 칠해진 셀의 개수를 세고 합계를 구하는 함수를 배워봤습니다. 그런데 업무를 하다 보면 이런 생각이 들 때가 있죠. "개수는 알겠는데, 색칠된 데이터들만 맨 위로 모아서 한눈에 보고 싶다!"

엑셀 기본 필터 기능에도 '색상 기준 정렬'이 있지만, 데이터가 수천 줄이고 색상이 여러 개라면 매번 마우스를 클릭하는 것도 일입니다. 오늘은 클릭 한 번에 특정 색상을 맨 위로 올려주는 자동 정렬 매크로를 만들어 보겠습니다.


왜 자동 정렬 매크로가 필요할까요?

📦 실제 물류 업무 사례
재고 실사 중 '수량 불일치' 건에는 빨간색, '확인 필요' 건에는 노란색을 칠했습니다.
수많은 데이터 사이에 흩어져 있는 이 유색 셀들을 상단으로 즉시 집합시켜야 빠른 조치가 가능합니다.

색깔별 자동 정렬 매크로 코드

아래 코드를 복사해서 VBA 모듈에 붙여넣으세요. 이 매크로는 선택한 셀의 색상을 기준으로 데이터 전체를 정렬해 줍니다.

Sub SortByColor()
    Dim ws As Worksheet
    Dim targetColor As Long
    Dim lastRow As Long
    Dim lastCol As Long
    Dim sortCol As Integer

    Set ws = ActiveSheet
    
    '1. 현재 선택된 셀의 색상과 열 번호 가져오기
    targetColor = Selection.Interior.Color
    sortCol = Selection.Column
    
    '2. 데이터의 마지막 행과 열 찾기
    lastRow = ws.Cells(ws.Rows.Count, sortCol).End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    '3. 정렬 실행 (선택한 색상을 맨 위로)
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add(Selection, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = targetColor
    
    With ws.Sort
        .SetRange ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    MsgBox "선택한 색상 기준 정렬이 완료되었습니다!"
End Sub

사용 방법 🚀

  • 정렬의 기준이 될 색깔이 칠해진 셀을 하나 선택합니다.
  • [개발 도구] -> [매크로] (Alt + F8)에서 SortByColor를 실행합니다.
  • 해당 열에서 같은 색을 가진 모든 데이터가 제목 바로 아래로 즉시 모입니다!
💡 칵칵의 실무 팁
이 매크로를 [빠른 실행 도구 모음]이나 [도형 버튼]에 연결해 두면 마우스 클릭 한 번으로 수천 줄의 데이터를 정렬할 수 있어 매우 편리합니다.

시리즈 종합 활용 🛠️

지금까지 배운 기능들을 조합하면 완벽한 업무 시스템이 됩니다.

단계적용 기능결과
1단계 SortByColor (3편 ⭐) 문제 데이터(유색 셀)를 맨 위로 집결
2단계 CountByColor (1편) 조치해야 할 전체 건수 즉시 파악
3단계 SumByColor (2편) 불일치 수량의 합계를 구해 정산 반영
⚠️ 주의사항
데이터에 제목(Header)이 반드시 1행에 있어야 정확하게 작동합니다.
색상이 전혀 없는 셀을 선택하고 실행하면 기본 정렬 상태로 돌아갑니다.

색깔을 활용한 3부작 시리즈가 이렇게 완성되었습니다! 개수 세기, 합계 구하기, 그리고 오늘 배운 정렬까지. 이 세 가지만 자유자재로 써도 엑셀 업무의 질이 달라질 거예요.

다음 편에서는 "엑셀 보고서 작성을 자동화하는 절대 법칙"에 대해 다뤄보겠습니다. 많은 기대 부탁드립니다! 😊

반응형
반응형
코딩으로 시간 벌기 / 엑셀 입문

VLOOKUP, 8,000개 데이터 매칭을 10초 만에 끝내는 마법 🪄

물류아재 칵칵 · 엑셀 기초 시리즈 4편

오후 5시 50분. 퇴근을 불과 10분 앞두고 사내 메신저 알림이 날카롭게 울립니다. "김대리, 여기 8,000여 품목 코드 목록인데, 퇴근 전까지 옆 칸에 제품명이랑 단가 좀 채워서 넘겨줘."

등줄기에 식은땀이 흐릅니다. 8천 개의 품목 코드를 시스템에서 일일이 검색해서 복사하고 붙여넣는다면, 오늘 밤 자정 전에 퇴근하기는 글렀습니다. 사무실에는 타닥타닥 마우스 클릭 소리만 메아리치고, 모니터 불빛에 비친 얼굴은 점점 흙빛으로 변해갑니다. 하지만, 엑셀의 '이 함수'를 아는 순간 비극은 해피엔딩으로 바뀝니다. 바로 직장인 생존 필수템, VLOOKUP입니다.


VLOOKUP, 도대체 뭔가요? 🤔

📦 쉽게 이해하는 VLOOKUP
VLOOKUP은 똑똑한 심부름꾼입니다. "이 '바코드 번호'를 줄 테니까, 저쪽 '단가표'에 가서 똑같은 번호를 찾은 다음, 그 옆에 적혀있는 '가격'을 내 앞으로 가져와!"라고 명령하는 것과 똑같습니다.

딱 4가지만 기억하는 공식 📝

복잡한 수식창을 열 필요 없이, 머릿속에 이 네 가지 순서만 기억하세요.

' VLOOKUP 기본 공식
=VLOOKUP(찾을 값, 데이터 범위, 열 번호, 0)
순서의미실무 예시
1. 찾을 값 내가 가진 단서 내 표에 적힌 '품목코드' 셀 클릭
2. 데이터 범위 단서를 찾을 원본 표 단가표 전체를 마우스로 드래그
3. 열 번호 가져올 정보의 위치 단가가 3번째 열에 있으면 '3' 입력
4. 0 (FALSE) 정확히 일치 직장인은 무조건 '0'을 씁니다!

실전 적용 5단계 스텝 🚀

  • 값을 가져올 빈 셀을 클릭하고 =VLOOKUP( 을 입력합니다.
  • 내 표에 있는 단서(예: A2셀의 품목코드)를 마우스로 콕 찍고 쉼표(,)를 누릅니다.
  • 원본 단가표 영역을 쭈욱 드래그합니다. (이때 키보드 F4를 눌러 범위를 고정해주는 것이 핵심입니다!) 그리고 쉼표.
  • 원본 표에서 '단가'가 왼쪽에서 몇 번째 기둥인지 세어 숫자를 적고 쉼표. (예: 3번째면 3)
  • 숫자 0을 적고 괄호를 닫은 뒤 엔터를 칩니다.

🚨 무시무시한 #N/A 에러 해결법

분명 시키는 대로 했는데 #N/A 에러가 떠서 당황하신 적 있으시죠? 99% 확률로 아래 두 가지 원인 때문입니다.

1. 눈에 안 보이는 띄어쓰기 (공백)
우리가 보기엔 똑같은 "A001"이지만, 뒤에 띄어쓰기가 숨어있는 "A001 "은 엑셀에게 완전히 다른 데이터입니다. 원본 데이터에 스페이스바 공백이 들어간 건 아닌지 확인하세요.
2. 텍스트 vs 숫자 형식 불일치
하나는 진짜 숫자 형식이고, 하나는 텍스트로 저장된 숫자(초록색 삼각형 표시)일 때 에러가 납니다. 두 데이터의 형식을 똑같이 맞춰주면 바로 해결됩니다!

처음엔 괄호와 쉼표가 어색하지만, 이 기능 하나가 하루의 퇴근 시간을 최소 1시간은 앞당겨 줄 것입니다. 오늘 당장 옆에 있는 더미 데이터를 열어서 두 표를 매칭해 보는 연습을 해보세요! 💪

반응형

+ Recent posts