์์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ง์ ๋ฐ๋ผ ์๋์ผ๋ก ํ ์นธ์ฉ ์๋๋ก ์ด๋์ํค๋ ๊ธฐ๋ฅ์ **๋งคํฌ๋ก(VBA)**๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ ์ง๋ฅผ ํ์ธํ ํ, ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋๋ก ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
1. ์ค๋น ๋จ๊ณ
1) ์ํธ ๊ตฌ์กฐ ์ค๋น
- ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ ๊ธฐ์ค์ด ๋๋ ์
์ ์ ํฉ๋๋ค.
- ์: A1 ์ ์ ์ค๋ ๋ ์ง๊ฐ ์ ๋ ฅ๋๋๋ก ์ค์ .
- ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํฌ ๋ฒ์๋ฅผ ์ ํฉ๋๋ค.
- ์: B์ด์์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ก ์ด๋.
2. VBA ๋งคํฌ๋ก๋ก ์๋ ์ด๋ ์ค์
์์ ์ VBA(Visual Basic for Applications)๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ก ์ด๋ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
1) VBA ๋งคํฌ๋ก ์ฝ๋ ์์ฑ
- VBA ํธ์ง๊ธฐ ์ด๊ธฐ:
- Alt + F11์ ๋๋ฌ VBA ํธ์ง๊ธฐ๋ฅผ ์ฝ๋๋ค.
- ์ ๋ชจ๋ ์ถ๊ฐ:
- ์๋จ ๋ฉ๋ด์์ ์ฝ์ > ๋ชจ๋์ ์ ํ.
- ์๋ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ต๋๋ค.
vba
์ฝ๋ ๋ณต์ฌ
Sub MoveDataDown() Dim ws As Worksheet Dim todayDate As Date Dim lastDate As Date ' ์ํธ ์ ํ (ํ์์ "Sheet1"์ ์ํ๋ ์ํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ) Set ws = ThisWorkbook.Sheets("Sheet1") ' ์ค๋ ๋ ์ง ๊ฐ์ ธ์ค๊ธฐ todayDate = Date lastDate = ws.Range("A1").Value ' A1์ ์ ์ฅ๋ ๋ ์ง์ ์ค๋ ๋ ์ง๊ฐ ๋ค๋ฅด๋ฉด ๋ฐ์ดํฐ ์ด๋ If lastDate <> todayDate Then Dim rng As Range ' ๋ฐ์ดํฐ ๋ฒ์ ์ง์ (B์ด ๊ธฐ์ค) Set rng = ws.Range("B1:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) ' ๋ฐ์ดํฐ๋ฅผ ํ ์นธ ์๋๋ก ์ด๋ rng.Cut Destination:=rng.Offset(1, 0) ' ์ค๋ ๋ ์ง๋ก ์
๋ฐ์ดํธ ws.Range("A1").Value = todayDate End If End Sub
2) ์ฝ๋ ์ค๋ช
- A1 ์ ์ ๋ ์ง ํ์ธ: ์ค๋ ๋ ์ง์ A1 ์ ์ ๋ ์ง๋ฅผ ๋น๊ตํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ด๋: B์ด์ ๋ฐ์ดํฐ๋ฅผ ํ ์นธ ์๋๋ก ์ด๋.
- ์ค๋ ๋ ์ง ์ ๋ฐ์ดํธ: ๋ ์ง๊ฐ ๊ฐฑ์ ๋์์์ ๊ธฐ๋กํ์ฌ ๋ฐ๋ณต ์คํ ๋ฐฉ์ง.
3) ๋งคํฌ๋ก ์คํ ์ค์
- ๋งคํฌ๋ก ์คํ ๋ฐฉ๋ฒ:
- VBA ํธ์ง๊ธฐ์์ ์์ฑํ ์ฝ๋๋ฅผ ์ ์ฅํ๊ณ Alt + F8์ ๋๋ฌ ๋งคํฌ๋ก๋ฅผ ์คํํฉ๋๋ค.
- MoveDataDown์ ์ ํ ํ ์คํ ๋ฒํผ ํด๋ฆญ.
- ์๋ ์คํ ์ค์ :
- ๋งค์ผ ์์ ์ ์ด ๋ ์๋ ์คํํ๋ ค๋ฉด, ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- VBA ํธ์ง๊ธฐ์์ ThisWorkbook์ ๋๋ธ ํด๋ฆญํ๊ณ ์๋ ์ฝ๋๋ฅผ ์
๋ ฅ:
vba์ฝ๋ ๋ณต์ฌPrivate Sub Workbook_Open() Call MoveDataDown End Sub
- ์์ ํ์ผ์ด ์ด๋ฆด ๋ ์๋์ผ๋ก MoveDataDown ๋งคํฌ๋ก๊ฐ ์คํ๋ฉ๋๋ค.
3. ์ถ๊ฐ ์ค์
1) ํน์ ์๊ฐ์ ์๋ ์คํ
- Windows ์์ ์ค์ผ์ค๋ฌ์ ํจ๊ป ์ฌ์ฉํ์ฌ ํน์ ์๊ฐ์ ๋งคํฌ๋ก๊ฐ ์คํ๋๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
2) ๋งคํฌ๋ก ๋ณด์ ์ค์
- ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ณด์์ ๋ฎ์ถ๊ฑฐ๋, ์ ๋ขฐํ ์ ์๋ ์์น์ ํ์ผ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
- ํ์ผ > ์ต์ > ๋ณด์ ์ผํฐ > ๋งคํฌ๋ก ์ค์ ์์ "๋ชจ๋ ๋งคํฌ๋ก ์ฌ์ฉ"์ ์ ํ.
4. ์ฃผ์์ฌํญ
- ๋ฐ์ดํฐ ๋ณต๊ตฌ ๋๋น:
- ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ๋ ์์ ์ด๋ฏ๋ก, ์คํ ์ ์ ํ์ผ์ ๋ฐฑ์ ํ์ธ์.
- ๋ ์ง ๊ธฐ์ค ์ ํ์ฑ:
- A1 ์ ์ ๋ ์ง๊ฐ ์๋ชป ์ค์ ๋๋ฉด ์๋ํ์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํฉ๋๋ค.
- ์์
๋ฒ์ ์ง์ :
- ํ์ํ ๋ฒ์(B์ด)๋ฅผ ์ ํํ ์ง์ ํ์ฌ ๋ถํ์ํ ๋ฐ์ดํฐ ์ด๋์ ๋ฐฉ์งํ์ธ์.
5. ๊ฒฐ๋ก
- ์ ๋ฐฉ๋ฒ์ ํตํด ๋ ์ง ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ํ ์นธ ์๋๋ก ์ด๋ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
- VBA ๋งคํฌ๋ก๋ ๋ฐ๋ณต์ ์ธ ์์ ์ ์๋ํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๋ฏ๋ก, ์ฝ๋ ์์ฑ ํ ํ์ผ ์ ์ฅ ์ ๋ฐ๋์ **๋งคํฌ๋ก ์ฌ์ฉ ๊ฐ๋ฅ ํ์ผ ํ์(.xlsm)**์ผ๋ก ์ ์ฅํ์ธ์.
TIP: VBA ์ฝ๋๊ฐ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ, ๊ฐ๋จํ ์คํ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด ๋จผ์ ํ ์คํธํด๋ณด๋ ๊ฒ์ด ์์ ํฉ๋๋ค! ๐
๋๊ธ