返回列表 上一主題 發帖

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

回復 1# 198188


    進階篩選即可
學海無涯_不恥下問

TOP

回復 3# 198188


    你是要把JPM的資料列複製過去不是嗎?
那就錄製進階篩選取得程式碼就好了
若不想多出準則欄位,那用以下代碼
將JPM用錯誤值公式取代
然後複製這些列貼到目標位置
  1. Sub nn()
  2. With 工作表1
  3. .Range("B:B").Replace "JPM", "=1/0", xlWhole
  4. Set Rng = .Range("B:B").SpecialCells(xlCellTypeFormulas, 16)
  5. Rng.Value = "JPM"
  6. Rng.EntireRow.Copy Sheets("JPM").[A2]
  7. End With
  8. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# 198188
  1. Sub nn()
  2. With 工作表1
  3. If Application.CountIf(.Range("B:B"), "JPM") > 0 Then '判斷B欄是否有JPM
  4. .Range("B:B").Replace "JPM", "=1/0", xlWhole '將JPM以公式取代
  5. Set Rng = .Range("B:B").SpecialCells(xlCellTypeFormulas, 16) '將公式為錯誤值的儲存格設為變數
  6. Rng.Value = "JPM" '將公式還原成JPM
  7. Sheets("JPM").UsedRange.Offset(1).Clear '將JPM工作表內容清空
  8. Rng.EntireRow.Copy Sheets("JPM").[A2] '將B欄為JPM的列複製貼到JPM工作表
  9. End If
  10. End With
  11. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2012-11-13 15:13 編輯

回復 9# 198188
  1. Sub nn()
  2. With Sheets("Sheet1") '改成正確工作表名稱
  3. If Application.CountIf(.Range("B:B"), "JPM") > 0 Then '判斷B欄是否有JPM
  4. .Range("B:B").Replace "JPM", "=1/0", xlWhole '將JPM以公式取代
  5. Set Rng = .Range("B:B").SpecialCells(xlCellTypeFormulas, 16) '將公式為錯誤值的儲存格設為變數
  6. Rng.Value = "JPM" '將公式還原成JPM
  7. Sheets("JPM").UsedRange.Offset(1).Clear '將JPM工作表內容清空
  8. Rng.EntireRow.Copy Sheets("JPM").[A2] '將B欄為JPM的列複製貼到JPM工作表
  9. End If
  10. End With
  11. End Sub
複製代碼
問題二
開啟檔案
fs = "C:\user\destop\outstanding payment.xlsx"
Set wb = Workbooks.Open(fs)
For j=1 To ....
i = Application.Match(Sheet1.Cells(1, j), wb.Sheets("Sheet2").[A:A], 0)
...
...
...
Next
wb.Close 0
學海無涯_不恥下問

TOP

回復 11# 198188
  1. Sub nn()
  2. Dim Ay(), Rng As Range, m$, A As Range, r&, Ar
  3. With Sheets("Sheet1") '改成正確工作表名稱
  4. If Application.CountIf(.Range("B:B"), "JPM") > 0 Then '判斷B欄是否有JPM
  5. .Range("B:B").Replace "JPM", "=1/0", xlWhole '將JPM以公式取代
  6. Set Rng = .Range("B:B").SpecialCells(xlCellTypeFormulas, 16) '將公式為錯誤值的儲存格設為變數
  7. Rng.Value = "JPM" '將公式還原成JPM
  8. For Each A In Rng
  9. r = A.Row
  10. m = .Cells(r, "U") & "、" & .Cells(r, "V") & "、" & .Cells(r, "W")
  11. Ar = Array(.Cells(r, "S").Value, .Cells(r, "T").Value, .Cells(r, "C").Value, .Cells(r, "AA").Value, .Cells(r, "D").Value, .Cells(r, "AB").Value, _
  12. .Cells(r, "AC").Value, .Cells(r, "AD").Value, .Cells(r, "AE").Value, .Cells(r, "AF").Value, .Cells(r, "F").Value, m, .Cells(r, "X").Value, .Cells(r, "Y").Value, .Cells(r, "Z").Value)
  13. ReDim Preserve Ay(s)
  14. Ay(s) = Ar
  15. s = s + 1
  16. Next
  17. Sheets("JPM").UsedRange.Offset(1).Clear '將JPM工作表內容清空
  18. If s > 0 Then Sheets("JPM").[A2].Resize(s, UBound(Ar) + 1) = Application.Transpose(Application.Transpose(Ay)) '將陣列寫到JPM工作表
  19. End If
  20. End With
  21. End Sub
複製代碼
Match函數如果找不到符合資料就會出錯
學海無涯_不恥下問

TOP

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

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

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題