ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦p¦ó¶¡±µ§ì¨ú¨ä¥¦Àɮתº¸ê®Æ¡H

[µo°Ý] ¦p¦ó¶¡±µ§ì¨ú¨ä¥¦Àɮתº¸ê®Æ¡H

¦p¦ó¶¡±µ§ì¨ú¨ä¥¦Àɮתº¸ê®Æ¡H

³o¬O¤@­Ó¤ëµ² ¶}µo²¼ªºµ{¦¡ Âú§Î ¡]¤@¨Ç¤£¾A¦Xªº¸ê®Æ§Ú³£¥ý®³±¼¤F¡A¤£°Q½×¾Aªk©Êªº°ÝÃD¡^

¦]¬°«È¤H³£¬Oñ±b¤ëµ²¡A©Ò¥H¨C­Ó¤ëªº¤ë©³³£­nªá«Üªøªº®É¶¡¶}µo²¼¡A§Ú·QÅý³o­Óµ{§Ç§ó§Ö¡A©Ò¥HµÛ¤â¥Î excel ¨Ó³B²z

¤@¡B¦]¬°¤ëµ²ªº©ú²Ó¬O±q erp §ì¥X¨Ó¡]§O¥s§Ú¥Î ERP ¶}µo²¼¡A§Úª¾¹D  erp ¦³¶}µo²¼¥\¯à¡A¦ý¬O«Ü¦h¾ú¥v­I´º¦]¯À¡A¥Îerp ªº¬[ºcµLªk¹F¨ì§Ú­nªº¥Øªº¡^

¤ë©³§Ú·|±q erp ¶×¥X ¡y_r_©ú²Ó_1060325.xls¡z ³o¼Ëªº©ú²ÓÀÉ®×

¦]¬°ÀɦW¤£¤@­P¡]¨C­Ó¤ëªº¶×¥X¸ê®ÆÀɦW¤£¤@¼Ë¡^¡A©Ò¥H§Ú¦b ¥Dµ{¦¡ªº °ò¥»¸ê®Æ sheet ¡A°µ¤F¤@­Ó«öÁä¡A¥Î¨Ó¨ú±o/³]©w ©ú²ÓªºÀɮצWºÙ¡C


¤G¡B¸g¹Lªø®É¶¡ªº§V¤O¡A§Ú©w¸q¤F¨â­Ó¦WºÙ¨Ó¨ó§U¨ú±o©ú²ÓÀɪº¸ê®Æ¡]¤£°Q½×³o¨â¦WºÙ¦nÃa¡A³o¤w¸g¬O§Y¦³¬[ºc¤Uªºµ²ªG¤F¡A¾ã­Óµ{¦¡ªº³£¤w¸g§¹¦¨¡A¥Ø«e¥u¬O­n¥[±j«oµL¸ô¥i¨«¡^

DT_AA =INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$E:$E",1)

DT_LST =OFFSET(INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$B$1",1),MATCH(­pºâ¾÷!$A$1,DT_AA)-COUNTIF(DT_AA,­pºâ¾÷!$A$1),,COUNTIF(DT_AA,­pºâ¾÷!$A$1),)

¦bsheets(­pºâ¾÷)ªº A1 =«È¤áªº½s¸¹

¦bsheets(­pºâ¾÷)ªº A17 =COUNTIF(DT_AA,$A$1) ­pºâ¥X©ú²Ó¤¤¡A«ü©wªº«È¤á¦³´X±ø©ú²Ó

¦bsheets(­pºâ¾÷)ªº B17 =MATCH($A$1,DT_AA,1) ­pºâ¥X©ú²Ó¤¤¡A«ü©wªº«È¤á®M²Ó®M«á¤@¦æ¦b²Ä´X¦æ

¦bsheets(­pºâ¾÷)ªº P1 = °Ñ¦Ò¤é´Á¡C

³o¬O­pºâ¾÷¤W­±ªº¥|­Ó¥D­nÅܼÆ

¡]¤W­zªº¬[ºc¤w¸g©w¤F¡A«ÜÃø­×§ï¡^

¦b ThisWorkBook ¤¤
Private Sub Workbook_Open()
'-------------------------------------------------------------
        '³]©w§Ö³tÁä     https://msdn.microsoft.com/zh-tw/library/office/ff197461.aspx
        
        Application.OnKey "%1", "SheetMove"                alt+1

SheetMove©w¸q¦b Macro2¤§¤¤

°õ¦æ¥Dµ{¦¡¡A¥¨¶°·|±N«ü©wªº©ú²ÓÀÉ ¦P¨B¶}±Ò¡C


¤T¡B²³æÁ¿¡A´N¬O§Q¥Î alt+1 ¦b¡y¤ëµ²¸ê®Æ¡z->¡y­pºâ¾÷¡z->¡y¤TÁp¸ê®Æ¡z->¡y¤ëµ²¸ê®Æ¡z¡A°µloop ¤Á´«ªº°Ê§@¡C

±q¤ëµ²¸ê®Æ¡A±N­n³B²zªº«È¤á¸ê°T copy ¨ì ­pºâ¾÷

¦b­pºâ¾÷±N¸ê®Æºâ§¹¤§«á¡A¦A copy ¨ì¤TÁp¸ê®Æ

³Ì«á¦A±q¤TÁp¸ê®Æ¦^¨ì¤ëµ²¸ê®Æ

­«´_¤W­z¡Aª½¨ì±N©Ò¦³¤ëµ²¸ê®Æ³B²z§¹¡C


¦bSub setup_cal() ¤§¤¤¡A¤@¶}©l¡A§Ú¥Î
                                Sheets("­pºâ¾÷").[p1] = Sheets("­pºâ¾÷").[p1] + 3       '²£¥Í¥X³f¤é´£¥Ü
                                If Sheets("­pºâ¾÷").[p1] > 22 Then
                                        Sheets("­pºâ¾÷").[p1] = 1
                                End If

²£¥Í¤@­Ó 1 4 7 10 13...22 1 ... ªº¡y¤é´Á´£¥Ü¡z¡A¨ó§U¶}µo²¼ªº¤H¡A¨M©wµo²¼­n¶}¦b¨º¤@¤Ñ

ex: ´£¥Ü 10¡A¨º´N¬O³]¥h§ä °â³f©ú²Ó¡A³Ì±µªñ 10¤éªº ¤é´Á¡A°µ¬°µo²¼ªº¤é´Á¡C

²{¦b§Ú·QÅý³o­Óµ{§Ç¡y¦Û°Ê¤Æ¡z¤]´N¬OÅý setup_cal() ¯à°÷¦Û°Ê§ì¥X³Ì±µªñªº¤é¤l¡A¤£­n¦A¸g¹L¤H¤u§PÂ_



¥|¡B§Ú¬O¯uªº¦³¤ÀªR¡A¥u¬O¤@¹ê§@¤U¥h´N¥d¦b¨º°Ê¼u¤£±o

pseudo code()

Sheets("­pºâ¾÷").[p1]+ Sheets("°ò¥»¸ê®Æ").Range("f8").value = ¡y´£¥Ü¤é´Á¡z        '²£¥Í´£¥Üªº¤é´Á

for (i= 0~©ú²ÓÁ`¼Æ¡^{                                                                //§ä¥X³Ì±µªñªº¨â­Ó¤é´Á

        if( ¥X³f¤é(i) >¡y´£¥Ü¤é´Á¡z) ¼È¦s¤éu= ¥X³f¤é(i)

        else ( ¥X³f¤é(i) <¡y´£¥Ü¤é´Á¡z) ¼È¦s¤éd= ¥X³f¤é(i); i=©ú²ÓÁ`¼Æ; break;
}

if (¼È¦s¤éu - ¡y´£¥Ü¤é´Á¡z) > (¡y´£¥Ü¤é´Á¡z- ¼È¦s¤éd )  ¼È¦s¤é =¼È¦s¤éd ¡]¼È¦s¤éd ¸û±µªñ¡y´£¥Ü¤é´Á¡z)
else ¼È¦s¤é =¼È¦s¤éu                                                                //¨M©w¤é´Á

¦ý¬O vba ¹ê»Ú¼g°_¨Ó´N¤£¬O³o»ò¤@¦^¨Æ

Q1
ex:
¦bsheets(­pºâ¾÷)ªº A17 =COUNTIF(DT_AA,$A$1)=COUNTIF(INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$E:$E",1),$A$1)

¦bsheets(­pºâ¾÷)ªº B17 =MATCH($A$1,DT_AA,1)=MATCH($A$1,INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$E:$E",1),1)

§Ú­n¦b vba ª½±µcall COUNTIF(INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$E:$E",1),$A$1)
                    
                    MATCH($A$1,INDIRECT(°ò¥»¸ê®Æ!$B$16&°ò¥»¸ê®Æ!$B$17&"!$E:$E",1),1)
                    
¥¢±Ñ¡A½Ð«ü±Ð

Q2
¦b for loop ¤¤¡A§Ú­n§ì¥X Sheets("°ò¥»¸ê®Æ").[b16] ³o­ÓÀÉ®× ªº Sheets("°ò¥»¸ê®Æ").[b17] ³o¤@sheet ªº ¬Y¤@¦æªº²Ä¤G­Ó¸ê®Æ

ex:            
Date_tmp_str = Index(Sheets("°ò¥»¸ê®Æ").[b16] & Sheets("°ò¥»¸ê®Æ").[b17], 2, date_index - date_index_cnt)
Date_tmp_str=index([_r_°â³f©ú²Ó_20170405.xls]Sheet4!$B:$B,7,1)
Date_tmp_str = Sheets("°ò¥»¸ê®Æ").[b16] & Sheets("°ò¥»¸ê®Æ").[b17] & "!B:B"
Date_tmp_str = Index(Sheets("°ò¥»¸ê®Æ").[b16] & Sheets("°ò¥»¸ê®Æ").[b17], 2, date_index - date_index_cnt)
Date_tmp_str = Sheets("°ò¥»¸ê®Æ").[b16] & Sheets("°ò¥»¸ê®Æ").[b17] & "!B" & date_index - date_index_cnt

¡A½Ð±Ð±Ð¡A¨ì©³¸Ó«ç»ò¼g¡H §Ú¬d¨ìªº¦ü¥G³£¬O§ì¦P¤@­ÓÀɮפU¡A¤£¦Psheet ªº¤è¦¡¡A§Ú²{¦b­n§ìªº¸ê®Æ¡A¬O¦b¯S©wÄæ¦ì¡A©Ò«ü©wªºÀɮסB¬¡­¶¤U¡C

§Ú¤£ª¾¹D«ç»ò±q VBA §ì©ú²ÓÀɪº¸ê®Æ¡A¤U¤@¨B´N¨«¤£¤U¥h¤F

½Ð«ü±Ð¡AÁÂÁÂ~~


¡°¤U¸üÀɮסA¶}±Ò¡A¾Þ§@¤@¤U ALT+1 ¤ñ¸û®e©ö²z¸Ñ

·s¼W¸ê®Æ§¨.zip (50.64 KB)
¤½¶}¸gÅç¡A³Ð³y´¼¼z¡]§Ú¤S¤£¾a³o¹L¬¡¡^

¦^´_ 1# eigen


    ¦Û°Ý¦Ûµª¡G ª¦¤F¤@¾ã¤Ñªº  excel vba

        Dim wBook As Workbook
        Dim wSheet As Worksheet
        Dim wValue As String
        Dim wIDcnt As Integer
        Dim wIDMax As Integer

        Set wBook = Workbooks(Sheets("°ò¥»¸ê®Æ").[b15].value)

        If Not wBook Is Nothing Then  'Àɮ׶}±Ò
                Set wSheet = wBook.Worksheets(Sheets("°ò¥»¸ê®Æ").[b17].value)
               
                wValue = wSheet.Range("B" & "11").value

                wIDcnt = Application.CountIf(wSheet.Range("E:E"), Sheets("­pºâ¾÷").Range("a1").value)
                wIDMax = Application.Match(Sheets("­pºâ¾÷").Range("a1").value, wSheet.Range("E:E"), 1)

                wValue = wSheet.Range("B" & wIDMax).value

        End If
²×©ó
¤½¶}¸gÅç¡A³Ð³y´¼¼z¡]§Ú¤S¤£¾a³o¹L¬¡¡^

TOP

        ÀR«ä¦Û¦b : ¯à¥I¥X·R¤ß´N¬OºÖ¡A¯à®ø°£·Ð´o´N¬O¼z¡C
ªð¦^¦Cªí ¤W¤@¥DÃD