Lấy dữ liệu từ Bảng cân đối theo tiêu chí cho trước (1 người xem)

  • Thread starter Thread starter lulyen
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

lulyen

Thành viên mới
Tham gia
29/10/08
Bài viết
35
Được thích
2
Nhờ các bác cao thủ GPE giúp em vấn đề sau:
Em muốn nhặt một số tài khoản tại Sheet CANDOI theo các tiêu chí tại cột A của Sheet TIEUCHI, Em đã tạo Code và sử dụng For ….. Next theo biến n và biến J. Code chạy được, tuy nhiên nó chỉ ra được kết quả của tiêu chí đúng đầu tiên từ dưới lên mà không nhặt thêm các tiêu chí ở trên nó.
Rất mong được sự trợ giúp của gia đình GPE
 

File đính kèm

Để mà chạy được thì nên là vầy:
PHP:
Option Explicit
Sub Lay_DL()
 Dim Cot%, SoDong&, TK, Dai%, N&
 Sheet3.Activate
 Sheet3.Range("A1").CurrentRegion.Delete xlUp
 Application.ScreenUpdating = False
 Cot = 1
 SoDong = Sheet2.[A99].End(xlUp).Row
    'MsgBox ("Co tat ca " & sodong - 1 & " dong")'
For j = 2 To SoDong
    'MsgBox ("Bien J = " & j)    '
    TK = Trim(Sheet2.Cells(j, Cot))
    'MsgBox ("The hien so tai khoan tuong ung: " & tk)       '
    Dai = Len(Sheet2.Cells(j, Cot))
    'MsgBox ("Do dai cua tai khoan: " & dai & " Ky tu")       '
    For N = 2 To Sheet1.[A65000].End(xlUp).Row
        If Left(Sheet1.Cells(N, 1), Dai) = TK Then
            'MsgBox ("Dieu kien de lay du lieu: " & Left(Sheet1.Cells(n, 1), dai))   '
            Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 1) = Sheet1.Cells(N, 1)   '<=|'
            Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 2) = _
                (Sheet1.Cells(N, 7) + Sheet1.Cells(N, 8))  '<=|'
        End If
    Next N
Next j
End Sub

Mình khuyên bạn nên tường minh hơn trong khi viết các dòng lệnh;
Bỡi làm vậy bạn sẽ đỡ tốn rất nhiều thời gian để đi tìm lỗi trong những đứa con tinh thần của bạn!

Các dòng lệnh mình có đánh dấu còn có thể rút gọn lại được; Nhưng chuyện đó hãy để sau.
Giờ thì bạn thử dịch các dòng lệnh sang tiếng Việt xem sao.

Chúc bạn ngày cuối tuần vui vẻ!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Để mà chạy được thì nên là vầy:
PHP:
Option Explicit
Sub Lay_DL()
 Dim Cot%, SoDong&, TK, Dai%, N&
 Sheet3.Activate
 Sheet3.Range("A1").CurrentRegion.Delete xlUp
 Application.ScreenUpdating = False
 Cot = 1
 SoDong = Sheet2.[A99].End(xlUp).Row
    'MsgBox ("Co tat ca " & sodong - 1 & " dong")'
For j = 2 To SoDong
    'MsgBox ("Bien J = " & j)    '
    TK = Trim(Sheet2.Cells(j, Cot))
    'MsgBox ("The hien so tai khoan tuong ung: " & tk)       '
    Dai = Len(Sheet2.Cells(j, Cot))
    'MsgBox ("Do dai cua tai khoan: " & dai & " Ky tu")       '
    For N = 2 To Sheet1.[A65000].End(xlUp).Row
        If Left(Sheet1.Cells(N, 1), Dai) = TK Then
            'MsgBox ("Dieu kien de lay du lieu: " & Left(Sheet1.Cells(n, 1), dai))   '
            Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 1) = Sheet1.Cells(N, 1)   '<=|'
            Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 2) = _
                (Sheet1.Cells(N, 7) + Sheet1.Cells(N, 8))  '<=|'
        End If
    Next N
Next j
End Sub

Mình khuyên bạn nên tường minh hơn trong khi viết các dòng lệnh;
Bỡi làm vậy bạn sẽ đỡ tốn rất nhiều thời gian để đi tìm lỗi trong những đứa con tinh thần của bạn!

Các dòng lệnh mình có đánh dấu còn có thể rút gọn lại được; Nhưng chuyện đó hãy để sau.
Giờ thì bạn thử dịch các dòng lệnh sang tiếng Việt xem sao.

Chúc bạn ngày cuối tuần vui vẻ!
Cảm ơn HYen17 rất nhiều, loay hoay mãi với đoạn mã này mà không thoát ra được: do là chưa khai báo được giá trị cho biến; Bạn có thể giúp mình rút gọn lại đoạn Code mà bạn đánh dấu được không??
Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 1) = Sheet1.Cells(N, 1) '<=|'
Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 2) = _
(Sheet1.Cells(N, 7) + Sheet1.Cells(N, 8)) '<=|'
 
Upvote 0
Vì bên trên ta đã có
Mã:
 Sheet3.Activate
nên
Mã:
 Sheet3.Cells(Sheet3.[B65000].End(xlUp).Row + 1, 1) = Sheet1.Cells(N, 1)
có thể chỉ còn là:
PHP:
 Cells([B65000].End(xlUp).Row + 1, 1) = Sheet1.Cells(N, 1)
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom