|
15. Á¤·Ä µÎ ¹ø° À̾߱â
ÀÚ·á´Ù¿î·Îµå : ¿ÀÆ©°ø±¸ÇÔ015.xls
¾È³çÇϼ¼¿ä! ¿À´ÃÀº Á¤·Ä¿¡ °üÇÑ µÎ ¹ø° À̾߱âÀÔ´Ï´Ù. À̹ø¿¡´Â ¿¢¼¿ÀÇ Á¤·Ä°ü·Ã ±â´ÉÀ» ¸ÕÀú »ìÆ캸°íÀÚ ÇÕ´Ï´Ù. ´Ü, ¿©±â¼ ¸»ÇÏ´Â Á¤·ÄÀº
¼¿ ³»¿ëÀ» Á¿ì Á¤·ÄÇÏ´Â °Í°ú´Â ¹«°üÇÕ´Ï´Ù.
°¡Àå ¸ÕÀú »ìÆ캼 ºÎºÐÀº ¿¢¼¿ÀÇ [µ¥ÀÌÅÍ]¸Þ´º¿¡ ÀÖ´Â [Á¤·Ä]ÀÔ´Ï´Ù. [Á¤·Ä]´ëÈ»óÀÚ¸¦ º¸¸é ÃÖ´ë 3°³ÀÇ Å°±îÁö Á¤·ÄÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î Á¤·ÄÀ» ÇÏ´Â °æ¿ì ¸ÅÅ©·Î±â·Ï±â°¡ ¾î¶°ÇÑ Äڵ尡 ¸¸µé¾î ³»´ÂÁö »ìÆ캸µµ·Ï ÇÏÁÒ.
¸ÅÅ©·Î ±â·Ï±â°¡ »ý¼ºÇÑ Á¤·ÄÄÚµå |
Sub Macro1()
'
' Macro1 Macro
' .ÀÌ(°¡) 2001-12-17¿¡ ±â·ÏÇÑ ¸ÅÅ©·Î
'
'
Range("A3:C7").Sort Key1:=Range("B4"), Order1:=xlAscending, Key2:=Range( _
"A4"), Order2:=xlAscending, Key3:=Range("C4"), Order3:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
End Sub
|
À§ÀÇ Äڵ忡¼ º¸¸é Range°³Ã¼¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. Á¤·ÄÇÒ ¹üÀ§("A3:C7")¸¦ Range°³Ã¼·Î ¼³Á¤ÇÏ°í Sort ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. ±×¸®°í Key1,Key2,Key3´Â [Á¤·Ä]´ëÈ»óÀÚÀÇ [ù°±âÁØ], [µÑ°±âÁØ],[¼Â°±âÁØ]À» °¡¸®Å°´Â °É ¾Ë ¼ö ÀÖ½À´Ï´Ù. Order1, Order2, Order3´Â ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÒ °ÍÀΰ¡(xlAscending), ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÒ °ÍÀΰ¡(xlDescending)¸¦ ÁöÁ¤ÇÏ´Â ÀμöÀÔ´Ï´Ù. ±×¿Ü Á¤·Ä°ú °ü·ÃÇÑ ¿©·¯ »çÇ×(¸Ó¸®±ÛÇà,¿É¼Ç)µîÀ» ÄÚµå·Î ¸¸µé¾î µÎ¾ú½À´Ï´Ù. Range°³Ã¼ÀÇ Sort¸Þ¼Òµå¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº µµ¿ò¸»À» ÂüÁ¶ÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù(»ç½Ç ¿À´ÃÀÇ º»·ÐÀº ÀÌ°Ô ¾Æ´Ï°Åµç¿ä)
Á¾Á¾ ¿¢»ç¸ð¿¡ ¿Ã¶ó¿À´Â Áú¹®Áß¿¡ 4°³ ÀÌ»óÀÇ Å°¸¦ °¡Áö´Â °æ¿ì ¾î¶»°Ô Á¤·ÄÀ» ÇÏ´Â °¡¸¦ ¹°¾îº¸´Â Áú¹®ÀÌ ÀÖ´õ±º¿ä. ÀÌ·± °æ¿ì Á¤·ÄÀ» µÎ¹ø ÇÏ¸é µÇ´Âµ¥ Á¤·Ä±âÁØÁß ¿ì¼± ¼øÀ§°¡ ³·Àº °ÍÀ» ¸ÕÀú Á¤·ÄÇÑ µÚ, ±× ´ÙÀ½¿¡ Á¤·ÄÇÏ¸é µÈ´Ù°í ÇÏ´õ±º¿ä (Àú´Â ±×·± Á¤·ÄÀ» Çغ¼ ÀÏÀÌ ¾ø¾î ´äº¯ÇϽŠºÐµéÀÇ ¸»¾¸À» ¿Å°å½À´Ï´Ù)
¿À´ÃÀº ÀÌ·± ¾Ö·Î»çÇ×À» ÀϺγª¸¶ ÇØ°áÇÒ ¼ö ÀÖ´Â Á¤·ÄÀ» ¸¸µé¾î º¸´Â ½Ã°£À» °¡Á®º¸°Ú½À´Ï´Ù. ¹Ì¸® ¸»¾¸µå¸®ÀÚ¸é ¿À´Ã ¸¸µå´Â ±â´ÉÀº 4°³ ÀÌ»óÀÇ ¿À» Á¤·ÄÇÒ ¼ö ÀÖ½À´Ï´Ù. Å×½ºÆ®¸¦ ¸ðµÎ Çغ¸Áú ¾Ê¾Æ ¾îµð±îÁö°¡ ÇÑ°èÀΰ¡´Â ¸ð¸£°Ú½À´Ï´Ù.
±×¸®°í ¾ÆÁ÷ ¹Ì¹ÌÇÑ Á¡Àº ù ¹ø° Å°, µÎ ¹ø° Å°, ¼¼ ¹ø° Å°µîÀ» µû·Î ÁöÁ¤ÇÒ ¼ö ´Â ¾ø°í ´Ù¸¸ °¡Àå ¿ÞÂÊ Ä÷³ÀÌ Ã¹¹ø° Å°, ´ÙÀ½ ¿À¸¥ÂÊ Ä÷³ÀÌ µÎ¹ø° Å°, ±× ´ÙÀ½ ¿À¸¥ÂÊÀÌ ¼¼¹ø° Å°µî Ä÷³ÀÇ ¼ø¼´ë·Î Å°°¡ Á¤ÇØÁý´Ï´Ù. ±×¸®°í °¢ Å°¸¶´Ù ¿À¸§Â÷¼ø ¶Ç´Â ³»¸²Â÷¼øÀ» °¢°¢ ÁöÁ¤ÇÒ ¼ö´Â ¾ø°í ÀüüÀûÀ¸·Î ¿À¸§Â÷¼ø ¶Ç´Â ³»¸²Â÷¼øµîÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
°á±¹ ¿¢¼¿ÀÇ Á¤·Ä°ú ºñ±³Çغ¼ ¶§ 4°³ÀÌ»óÀÇ Å°¸¦ Á¤·ÄÇÒ ¼ö ÀÖ´Ù´Â Á¡¿Ü¿¡´Â ÀåÁ¡Àº ¾ø½À´Ï´Ù. Á¤·ÄÀ» ÇÏ´Â ÇٽɼҽºÄÚµå´Â ¿Ü±¹¿¡¼ ¼öÀÔÇÏ¿´½À´Ï´Ù. Dave Steppan(http://www.geocities.com/SiliconValley/Network/1030/ExcelTop.html)À̶ó´Â ºÐÀÌ ¸¸µç MultiColumnSort(...)ÇÔ¼ö¸¦ °¡Á®´Ù°¡ Á¦°¡ ¸¸µç Æû¿¡¼ ºÙ¿´½À´Ï´Ù. (MultiColumnSort(...)ÇÔ¼ö´Â ³ªÁß¿¡ ¼³¸íÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù)
¸ÕÀú ÆûÀ» º¸µµ·Ï ÇÏÁÒ. »ý±ä °ÍÀº ¸Å¿ì ´Ü¼øÇÕ´Ï´Ù. Á¤·ÄÇÒ ¹üÀ§¸¦ ÀԷ¹޴ RefEditÄÁÆ®·Ñ°ú Á¤·Ä¼ø¼¸¦ ÀԷ¹޴ OptionButton¹öÆ°, ±×¸®°í Á¤·ÄÀ» ½ÇÁ¦ ¼öÇàÇϵµ·Ï ÇÏ´Â CommandButtonÀÌ ÀÖ½À´Ï´Ù. RefEditÄÁÆ®·ÑÀº ¿öÅ©½ÃÆ®ÀÇ ¿µ¿ªÀ» ÀÔ·Â ¹Þ½À´Ï´Ù. ÀÌÄÁÆ®·ÑÀÇ ¿À¸¥Âʳ¡À» º¸¸é ¹ØÁÙÀÖ´Â ¹öÆ°ÀÌ º¸ÀÏ °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¸é ´ëÈ»óÀÚ´Â Àá½Ã »ç¶óÁö°í ¹üÀ§¸¦ ÀÔ·ÂÇÏ´Â ³³ÀÛÇÑ ´ëÈ»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù. »ç½Ç ÀÌ°É ´©¸£Áö ¾Ê°í ±×³É ¿öÅ©½ÃÆ®¿¡ ¸¶¿ì½º¸¦ µå·¡±×ÇÏ¿© ¼¿À» ÀÔ·ÂÇصµ µË´Ï´Ù. ±×·¯¸é ValueÇÁ·ÎÆÛƼ¿¡ ÀÔ·ÂÇÑ ¹üÀ§ÀÇ ¼¿ÁÖ¼Ò¿¡ ÀúÀåµË´Ï´Ù. ÀÌ ¹üÀ§ÀÇ °ªÀ» Åëä·Î MultiColumnSort(...)ÇÔ¼öÀÇ Ã¹¹ø° ¸Å°³º¯¼ö·Î Àü´ÞÇÕ´Ï´Ù.
±×¸®°í Á¤·Ä¼ø¼¸¦ ÁöÁ¤ÇÏ´Â ¿É¼Ç¹öÆ°¿¡ µû¶ó Á¤·Ä¼ø¼°¡ Á¤ÇØÁö´Âµ¥, ¿À¸§Â÷¼øÀÎ °æ¿ì Á¤¼ö°ª 1À», ³»¸²Â÷¼øÀÎ °æ¿ì -1À» MultiColumnSort(...)ÇÔ¼ö¿¡ µÎ¹ø° ¸Å°³º¯¼ö·Î Àü´ÞÇÕ´Ï´Ù.
ÇÁ·Î±×·¥ ¼Ò½º |
Option Explicit
Dim SortMultColsTemp
Private Sub Sort_Click()
Dim rngRange As Range
Dim Order As Integer
Dim i As Integer
Dim j As Integer
Set rngRange = Range(RefEdit.Value)
Order = IIf(opAsc.Value, 1, -1)
Sort rngRange, Order
For i = 1 To rngRange.Columns.Count
For j = 1 To rngRange.Rows.Count
rngRange.Cells(j, i) = SortMultColsTemp(j, i)
Next j
Next i
Debug.Print i
Set rngRange = Nothing
Unload Me
End Sub
Private Sub Sort(InMatrix1 As Range, SortOrder As Integer)
Dim InMat1 As Variant
Application.Volatile
InMat1 = InMatrix1.Value
SortMultColsTemp = MultiColumnSort(InMat1, SortOrder)
End Sub |
Dim SortMultColsTemp
SortMultColsTemp´Â Á¤·ÄµÈ °á°ú¸¦ MultiColumnSort(...)ÇÔ¼ö·ÎºÎÅÍ ³Ñ°Ü¹Þ´Â VariantÇü½ÄÀÇ Àü¿ªº¯¼öÀÔ´Ï´Ù.
Private Sub btnSort_Click()
Dim rngRange As Range
Dim Order As Integer
Dim i As Integer
Dim j As Integer
Set rngRange = Range(RefEdit.Value)
rngRange´Â RangeÇü½ÄÀÇ º¯¼ö·Î¼ RefEditÄÁÆ®·ÑÀÇ ValueÇÁ·ÎÆÛƼ °ªÀ» ¹Þ¾Æ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¹üÀ§¸¦ ÀԷ¹޽À´Ï´Ù.
Order = IIf(opAsc.Value, 1, -1)
Order´Â ¿À¸§Â÷¼øÀΰ¡ ¶Ç´Â ³»¸²Â÷¼øÀΰ¡ ¿©ºÎ¸¦ µ¹·Á¹Þ½À´Ï´Ù.
Sort rngRange, Order
Sort()ÇÁ·Î½ÃÁ®´Â »ç¿ëÀÚ°¡ ÁöÁ¤ÇØÁØ Á¤·ÄÇÒ ¹üÀ§(rngRange)¿Í »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ Á¤·Ä¼ø¼(Order)¸¦ ¸Å°³º¯¼ö·Î ¹Þ½À´Ï´Ù. ¹ÞÀº ÈÄ ¾î¶»°Ô ó¸®ÇÏ´ÂÁö¸¦ ³ªÁß¿¡ º¸µµ·Ï ÇÏÁÒ.
For i = 1 To rngRange.Columns.Count
For j = 1 To rngRange.Rows.Count
rngRange.Cells(j, i) = SortMultColsTemp(j, i)
Next j
Next i
Á¤·ÄµÉ °á°ú¸¦ µÇµ¹·ÁÁÖ´Â ºÎºÐÀÔ´Ï´Ù.
Set rngRange = Nothing
rngRange °³Ã¼º¯¼ö¸¦ ´Ù »ç¿ëÇßÀ¸¹Ç·Î ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÕ´Ï´Ù.
Unload Me
»ç¿ëÀÚÁ¤ÀÇ ÆûÀ» ¸Þ¸ð¸®¿¡¼ ÇØÁ¦ÇÏ¿© ȸ鿡¼ ¾ø¾Û´Ï´Ù.
End Sub
Private Sub Sort(InMatrix1 As Range, SortOrder As Integer)
Dim InMat1 As Variant
Application.Volatile
¿¢¼¿¿¡ Àç°è»êÇϵµ·Ï ¸í·ÉÀ» ³»¸³´Ï´Ù. Ȥ½Ã °è»êÀÌ ¼öµ¿ÀÎ °æ¿ì °è»ê ¾ÈµÈ °á°ú¸¦ °¡Áö°í Á¤·ÄÇÏ´Â °ÍÀ» ¸·±â À§ÇÑ °ÍÀÔ´Ï´Ù.
InMat1 = InMatrix1.Value
InMatrix1 °³Ã¼º¯¼ö¿¡ ÀúÀåµÈ °ªÀ» InMat1 º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù. ÀÌ·¸°Ô ÀúÀåµÈ °ªÀ» MultiColumnSort(...)ÇÔ¼ö¿¡ ³Ñ±é´Ï´Ù.
SortMultColsTemp = MultiColumnSort(InMat1, SortOrder)
MultiColumnSort(...)ÇÔ¼ö¿¡ Á¤·ÄÇÒ °ª°ú Á¤·Ä¼ø¼¸¦ ¸Å°³º¯¼ö·Î ³Ñ°ÜÁÖ°í °á°ú¸¦ Àü¿ªº¯¼öÀÎ SortMultColsTemp¿¡ ÀúÀåÇÕ´Ï´Ù.
End Sub
ÇÁ·Î±×·¥À» ½ÇÇàÇÑ °á°ú¸¦ ´ÙÀ½°ú °°ÀÌ ±×¸²À¸·Î Àâ¾Æ º¸¿©µå¸®°í À̸¸ ¸¶Ä¡°íÀÚ ÇÕ´Ï´Ù. 4°³ Ä÷³°ú 5°³ Ä÷³À» Á¤·ÄÇÏ´Â °æ¿ì¸¦ ½ÇÇàÇغ¸¾Ò´Âµ¥, ÀÌ ¿¹´Â Dave SteppanÀÇ ÆÄÀÏ¿¡¼ °¡Á®¿Í Á¦°¡ ´Ù½Ã ¸¸µç ÇÁ·Î±×·¥À¸·Î ½ÇÇàÇÑ °á°úÀÔ´Ï´Ù.
¿À´ÃÀº ¿©±â±îÁöÀÔ´Ï´Ù. ¾ó¸¶Àü¿¡
¿¹Á¦ÆÄÀÏÀ» º¸´Ï ¸Þ´º¸¦ ±¸¼ºÇÏ´Â Sheet1½ÃÆ®¿¡
¸Þ´º·¹º§¿¡ ¾û¶×ÇÑ ¼ýÀÚ°¡ µé¾î°¡ ¸Þ´º±¸¼ºÀÌ ¾û¶×ÇÏ°Ô
µÈ °ÍÀ» º¸¾Ò½À´Ï´Ù. À̹ø¿¡ À̸¦ °íÃƴµ¥, Ȥ½Ã Áö³
Ä÷³ ¿¹Á¦ÆÄÀÏÀ» ´Ù¿î¹ÞÀ¸½Å ºÐµéÀÌ ´çȲÇÏÁö ¾Ê¾Ò³ª
½Í±º¿ä. ±×¸®°í Áߺ¹µ¥ÀÌÅÍ Ã³¸®¸¦ Çϱâ À§ÇØ ¿©·¯°¡Áö
ADO°³Ã¼¸¦ ÂüÁ¶ÇÏ´Ù º¸´Ï Á¾Á¾ ÂüÁ¶°¡ Ç®·Á ¿¹Á¦ÆÄÀÏÀ»
ºÒ·¯¿À´Â µµÁß LCASE() ¶Ç´Â FORMAT()µî¿¡¼ ¿¡·¯¸¦ ¸¸³ª½Ç
¼ö ÀÖ½À´Ï´Ù. ±×·± °æ¿ì VBE¿¡¼ [µµ±¸]-[ÂüÁ¶]·Î °¡¼Å¼
´©¶ôÀ¸·Î Ç¥½ÃµÈ °³Ã¼¸¦ ²¨¹ö¸®½Ã±¸, ÂüÁ¶ÇÒ °³Ã¼
¸ñ·Ï»óÀÚÀÇ ÇÏ´Ü¿¡¼ ´Ù½Ã °³Ã¼¸¦ ÂüÁ¶Çصνñæ
¹Ù¶ø´Ï´Ù.
|