返回列表 上一主題 發帖

如何可以讓不是"JPM"不顯示出來,也不會留一行空格?

如何可以讓不是"JPM"不顯示出來,也不會留一行空格?

Book1.rar (10.67 KB)
Sub JPM()
   Dim i As Integer, j As Integer, k As Integer, l As Integer
   Dim rowC As Integer
   Dim rB As Range
   Dim data() As String
   Dim found As Boolean

   '先將 AK:AR 的資料清除
   Worksheets("jpm").[A2:O65536].ClearContents

   '計算多少筆資料要處理
   rowC = Sheets(1).Range("A1").CurrentRegion.Rows.Count
   '先暫存資料,加速處理
   Set rB = Sheets(1).Range(Cells(1, 1), Cells(rowC, 32))
   ReDim data(rowC, 32)

   k = 0
   For i = 1 To rowC '處理資料
       j = 1
       found = False
       While (j <= k) And (found = False) '比對有沒有出現過
          If rB(i, 19) = data(j, 19) And rB(i, 20) = data(j, 20) And rB(i, 3) = data(j, 3) Then
             found = True
             data(j, 3) = rB(i, 3)
             data(j, 4) = rB(i, 4)
             data(j, 6) = rB(i, 6)
             data(j, 19) = rB(i, 19) + "、" + rB(i, 19)
             data(j, 20) = rB(i, 20) + "、" + rB(i, 20)
             data(j, 21) = data(j, 21) + "、" + rB(i, 21)
             data(j, 22) = data(j, 22) + "、" + rB(i, 22)
             data(j, 23) = data(j, 23) + "、" + rB(i, 23)
             data(j, 24) = data(j, 24) + "、" + rB(i, 24)
             data(j, 25) = data(j, 25) + "、" + rB(i, 25)
             data(j, 26) = data(j, 26) + "、" + rB(i, 26)
             data(j, 27) = rB(i, 27)
             data(j, 28) = rB(i, 28)
             data(j, 29) = rB(i, 29)
             data(j, 30) = rB(i, 30)
             data(j, 31) = rB(i, 31)
             data(j, 32) = rB(i, 32)
        End If
          j = j + 1
       Wend

       If found = False Then  '沒有出現過加入新資料
          k = k + 1
          data(k, 3) = rB(i, 3)
          data(k, 4) = rB(i, 4)
          data(k, 6) = rB(i, 6)
          data(k, 19) = rB(i, 19)
          data(k, 20) = rB(i, 20)
          data(k, 21) = rB(i, 21)
          data(k, 22) = rB(i, 22)
          data(k, 23) = rB(i, 23)
          data(k, 24) = rB(i, 24)
          data(k, 25) = rB(i, 25)
          data(k, 26) = rB(i, 26)
          data(k, 27) = rB(i, 27)
          data(k, 28) = rB(i, 28)
          data(k, 29) = rB(i, 29)
          data(k, 30) = rB(i, 30)
          data(k, 31) = rB(i, 31)
          data(k, 32) = rB(i, 32)
     End If
   Next i

       l = 1
   For i = 1 To k '列印資料
      
       If Range("B" & i + 1).Value = "JPM" Then
      
       Sheets("JPM").Cells(l, 1) = data(i, 19)
       Sheets("JPM").Cells(l, 2) = data(i, 20)
       Sheets("JPM").Cells(l, 3) = data(i, 3)
       Sheets("JPM").Cells(l, 4) = data(i, 27)
       Sheets("JPM").Cells(l, 5) = data(i, 4)
       Sheets("JPM").Cells(l, 6) = data(i, 28)
       Sheets("JPM").Cells(l, 7) = data(i, 29)
       Sheets("JPM").Cells(l, 8) = data(i, 30)
       Sheets("JPM").Cells(l, 9) = data(i, 31)
       Sheets("JPM").Cells(l, 10) = data(i, 32)
       Sheets("JPM").Cells(l, 11) = data(i, 6)
       Sheets("JPM").Cells(l, 12) = data(i, 21) + "、" + data(i, 22) + "、" + data(i, 23)
       Sheets("JPM").Cells(l, 13) = data(i, 24)
       Sheets("JPM").Cells(l, 14) = data(i, 25)
       Sheets("JPM").Cells(l, 15) = data(i, 26)
       End If
       l = l + 1
      Next i

MsgBox ("Sucess")

End Sub

如何可以讓不是"JPM"不顯示出來,也不會留一行空格?

回復 22# 198188


    各位高手,請問有沒有可以幫忙解決這個問題?
Sub HK()

Dim FRng As Range

Dim A As Range, Rng As Range
Dim i As Integer

fs = "C:\Users\patrick.HKG\Desktop\Payment\Updated info\payment report 2012.xlsx"

'fs = ThisWorkbook.Path & "\payment report 2012.xlsx"'同一目錄時使用

Set wb = Workbooks.Open(fs)

With ThisWorkbook.Worksheets("2012")

For Each A In .Range(.[A2], .Range("A1").End(xlDown))

   Set FRng = wb.Sheets("New form of payment report").Range("A:A").Find(A, lookat:=xlWhole) 這句只是由A1開始順序找尋下去,得出答案是第一個相同的資料。請問有無方法將它改成由A65536 開始順序找尋上去,得出答案是最後相同的資料
   If Not FRng Is Nothing Then

      If FRng.Offset(, 6).Value > 0.95 Then

         A.Offset(, 5) = FRng.Offset(, 9).Value '讓2012的D欄等於香港&海防單的L欄

         If Rng Is Nothing Then Set Rng = A.Offset(, 5) Else Set Rng = Union(Rng, A.Offset(, 5))

      End If

   End If

     Set FRng = Nothing

Next

End With

wb.Close 0

End Sub

TOP

回復 20# Hsieh

Set FRng = wb.Sheets("香港&海防單").Range("A:A").Find(A, lookat:=xlWhole) 請問如果在A:A內有兩個相同資料,那麼如何指令它由下至上找,我想要的是最後那個。
   
例如:

我想找123456,而出來的答案是e,而不是b.應該怎樣改?


wb.Sheets("香港&海防單").Range("A:A")內有這些資料
123455   a
123456   b
123457  c
123458  d
123456   e

TOP

回復 20# Hsieh


    可以了,謝謝您!
我主要是想在outstanding payments 表內根據HK ETA UPDATE內的資料更新,相同so,如果HK ETA UPDATE內的ETA和outstanding payments 表內的不同,就把outstanding payments 表內的ETA更改成HK ETA UPDATE內的ETA,然後標上顏色,如果相同就不變及如果outstanding payments 表內的so在HK ETA UPDATE表內沒有,也不變。

TOP

回復 18# 198188
提問時請描述你的需求
光從你的程式碼去猜你的需求會造成很大的差異
看看是否合乎你的需求
  1. Sub sample()
  2. Dim FRng As Range
  3. Dim A As Range, Rng As Range
  4. fs = "C:\Documents and Settings\USER\桌面\HK ETA update.xlsx"
  5. 'fs = ThisWorkbook.Path & "\HK ETA update.xlsx"'同一目錄時使用
  6. Set wb = Workbooks.Open(fs)
  7. With ThisWorkbook.Worksheets("2012")
  8. For Each A In .Range(.[A2], .Range("A1").End(xlDown))
  9.    Set FRng = wb.Sheets("香港&海防單").Range("A:A").Find(A, lookat:=xlWhole)
  10.    If Not FRng Is Nothing Then
  11.       If FRng.Offset(, 11) <> A.Offset(, 3) Then
  12.          A.Offset(, 3) = FRng.Offset(, 11).Value '讓2012的D欄等於香港&海防單的L欄
  13.          If Rng Is Nothing Then Set Rng = A.Offset(, 3) Else Set Rng = Union(Rng, A.Offset(, 3))
  14.       End If
  15.    End If
  16.    Set FRng = Nothing
  17. Next
  18.         If Not Rng Is Nothing Then Rng.Interior.Color = RGB(255, 200, 255)
  19. End With
  20. wb.Close 0
  21. End Sub
複製代碼
學海無涯_不恥下問

TOP

另外我想再問一樣!
RECEIVE
SEND
各有資料,但可否兩個STATE自我檢查,例如:
RECEIVE有以 ...
198188 發表於 2012-11-13 21:21



    Docs Record (Update11-10).rar (102.48 KB)
vba可以做到一個excel讓多位用家同時使用,輸入、儲存?
如果不能的話,vba可否用四個excel讓用家使用,然後再將這四個excel的資料定時傳到附件總表,然後再運算?

TOP

回復 15# Hsieh


Outstanding Payments.rar (680.06 KB) HK ETA update.rar (360 KB)

隨上附件!麻煩請看看!感激不盡~

TOP

回復  Hsieh


    可以了!謝謝!
11/11/2012
12/11/2012
13/11/2012
15/11/2012
15/11/2012
18 ...
198188 發表於 2012-11-13 21:07



   
另外我想再問一樣!
RECEIVE
SEND
各有資料,但可否兩個STATE自我檢查,例如:
RECEIVE有以下資料
207626 / XIANG / CHEONG / 23-OCT-12 / 15/11/2012 / DHL200 / OBL /            /             /PM
207626 / XIANG / CHEONG / 23-OCT-12 / 18/11/2012 / DHL201 /        / OHC  /            /AM
207626 / XIANG / CHEONG / 23-OCT-12 / 19/11/2012 / DHL202/       /            /    CO  /AM
                       
SEND 有以下資料
207626 / XIANG / CHEONG / 23-OCT-12 / 19/11/2012 / SF111 /        / OHC  /       /AM


然後電腦會自動記算還有哪些在手上還沒寄出!

207626 / XIANG / CHEONG / 23-OCT-12 / 15/11/2012,19/11/2012  / DHL200,DHL202 / OBL,CO  /  PM,AM

TOP

回復 13# Hsieh


    可以了!謝謝!
11/11/2012
12/11/2012
13/11/2012
15/11/2012
15/11/2012
18/11/2012
19/11/2012
11/11/2012
11/11/2012
11/11/2012

11/11/2012
11/12/2012
13/11/2012
15/11/2012
15/11/2012
18/11/2012
19/11/2012
11/11/2012
11/11/2012
11/11/2012
但是我想問,為何第二個的日期會變成11/12/2012?是哪裡出現問題?是不是因為我設定輸入時在日期前加'才這樣?但也只有一個出錯,不是全部出錯!
是不是資料庫內沒有JPM的資料就會出現問題?那是不是可以加句,如果沒有JPM的資料就不執行這個程式,那樣就沒事了?

TOP

回復 14# 198188
瞎子摸象
fs寫入字串不可能出錯,就算是路徑錯誤也不是在該行出錯
請把問題說明清楚,否則問題不再回復
學海無涯_不恥下問

TOP

        靜思自在 : 盡多少本份,就得多少本事。
返回列表 上一主題