返回列表 上一主題 發帖

匯出_但不重覆匯出的資料

匯出_但不重覆匯出的資料

Dear 大大

     小弟又來發問問題了~ 但先祝各位大大新年快樂~ 以後多照顧 ^^
       小弟的問題在於將輸入好的資料匯出後,但要先比對Data中是否有重覆,以避免重覆計算

     1.使用者會在sheet[輸入]中,將資料輸入,再點選{匯出}
     2. 匯出時為避免重覆計算,其條件[日期]and[CPO]and[組別]三者不可以重覆

     如附件為問題濃縮的範例   匯出_但不重覆.rar (7.09 KB)

回復 2# Hsieh

   Dear 超版主 大大

  真的很感謝你,很快的就解決我的問題,我也有將您的每行程式碼細細測試並了解
  大大用的方式是先將資料記錄起來,再用陣列的方式比對,看是否有不一樣的資料
  再將不一樣的資料記錄起來,最後再將不一樣的資料放在DATA中

  因為我給大大的範例是屬於條件式都是在一起的情況下,但是大大若我的條件修改為不是連續的情況下 (亦極條件與條件中間是有其他資料的時候)
  我有試著自行修改,但無奈小弟功力尚淺,無法用大大的模式修改好
  只好再請大大指教

  附件為問題之範例 匯出_但不重覆_延伸題.rar (10.68 KB)

TOP

回復 4# Hsieh


    Dear 大大
        感謝~ 我知道要改哪邊了~ 程式碼執行上也沒有問題~
            但是小弟在測試時~ 又胡思亂想~ 結果~ 找出了一個問題~
            就是若Data中~一開始就沒有資料或是僅一筆資料的時候好像是就會產生問題~
             For i = 1 To UBound(ar, 1) 該行指令中UBound(ar, 1) 就會等於65536 造成一直跑不停

        再請大大賜教一下

        附件為問題之範本 匯出_但不重覆_延伸題2.rar (10.98 KB)
學習才能提升自己

TOP

回復 4# Hsieh

Dear 大大
     我用一個很笨的方式來處理當DATA無資料時,所產生的問題
     不知道大大是否有其他方式
     這是我用大大的程式碼修改 (紅色為我新增的地方)
Dim Ay()
Set d = CreateObject("Scripting.Dictionary")
With Sheet2
    ar = .Range(.[B5], .[B5].End(xlDown).Offset(, 2))
        If UBound(ar, 1) = 0 Or UBound(ar, 1) = 65536 - 4 Then
            For i = 1 To 1
                mystr1 = Join(Application.Index(ar, i))
                d(mystr1) = d.Count
            Next
        Else
            For i = 1 To UBound(ar, 1)
                mystr1 = Join(Application.Index(ar, i))
                d(mystr1) = d.Count
            Next
        End If    With Sheet1
        ar = .Range(.[B5], .[B5].End(xlDown).Offset(, 6))
        For i = 1 To UBound(ar, 1)
            mystr1 = Join(Array(ar(i, 1), ar(i, 2), ar(i, 6)))
            If d.exists(mystr1) = False Then
                ReDim Preserve Ay(s)
                Ay(s) = Array(ar(i, 1), ar(i, 2), ar(i, 6), ar(i, 7))
                s = s + 1
            End If
        Next
    End With
    If s > 0 Then .[B65536].End(xlUp).Offset(1, 0).Resize(s, 4) = Application.Transpose(Application.Transpose(Ay))
End With
學習才能提升自己

TOP

回復 7# Hsieh


    謝謝大大~ 原來只要把xldown 改成xlup就可以將bug給克服
學習才能提升自己

TOP

回復 7# Hsieh


    Dear 大大

        小弟又小卡彈了~ 大大我需要將資料匯出,但是Data的部份又要保護避免被使用者修改(使用者僅能看)
            如果我把工作頁保護了,匯出的時候程式執行就會產生錯誤
        這樣的問題是否可以解決呢??

            附件為問題之範本 匯出_但不重覆_延伸題3.rar (12.41 KB)
學習才能提升自己

TOP

回復 10# Hsieh


    謝謝大大~ 問題解決了
        只要在匯前解開(Unprotect)與匯後鎖上就好了(Protect)

   真是感謝大大~ 我的整份報表慢慢將完成
學習才能提升自己

TOP

回復 10# Hsieh

   Dear 大大

   小小卡彈中,若是sheet[Data]中已有一筆資,我經過測試後,在活頁[輸入]就匯不過去了,
    執行的時候發現是 mystr1 = Join(Application.Index(ar, i)) 這行指令會產生{執行階段錯誤"13" 型態不符}
    請大大指導一下~

   問題如附件之範本 匯出_但不重覆_延伸題4.rar (12.54 KB)
學習才能提升自己

TOP

回復 13# Hsieh


    Dear 大大~ 感恩~ 原來只要把那行程式碼改成array的方式就可以解決
         真的很感謝你~
學習才能提升自己

TOP

回復 13# Hsieh


     Dear 大大

         若是重覆的資料,有資料是KEY IN錯誤,但是已經按了匯出資料,
             需要將依匯出的條件UPDATE錯務的地方,請大大指教一下


          附件為問題之範本 匯出_但不重覆_延伸題5 (重覆資料更新).rar (12.45 KB)
學習才能提升自己

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題