TRỢ GIÚP CODE VBA (1 người xem)

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

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

MANHTS

Thành viên chính thức
Tham gia
16/11/20
Bài viết
63
Được thích
4
Em chào các bác ạ:
Em có 1 file như dưới em muốn tìm dữ liệu từ SHEET DULIEUNHAP cái này em sẽ nhập tay: sau đó tại sheet biểu mẫu muốn tìm và xuất ra theo danh sách em đã tại list sẵn : bác nào giúp em đoạn code với ạ . em cảm ơn
 

File đính kèm

muốn tìm và xuất ra theo danh sách em đã tại list sẵn
Đoạn này không hiểu cho lắm
Bài đã được tự động gộp:

Tiêu đề không viết hoa cả câu nha bạn.nội dung tiêu đề cũng nên sửa lại đúng với nội dung yêu cầu của bài.với lại sau này có đăng bài về nhờ viết code thì đăng vào box lập trình với excel nha
 
Đoạn này không hiểu cho lắm (tức là em có 1 sheet dữ liệu nhập bác ạ chủ yếu là hóa chất sau khoảng vài trăm loại ở mỗi phương pháp vd e để là aflatoxin thì hóa chất đó nó sử dụng bao nhiêu, sau đó ở biểu mẫu ví dụ em muốn tìm dữ liệu của phương pháp aflatoxin thì ở cột aflatoxin có dữ liệu nào thì ở biểu mẫu sẽ tìm ra lạo hóa chất đó hình như phải sd vòng lặp 2 lần mà em k biết sử dụng
Bài đã được tự động gộp:

Tiêu đề không viết hoa cả câu nha bạn.với lại sau này có đăng bài về nhờ viết code thì đăng vào box lập trình với excel nha
Vâng em sẽ lưu ý:
 
sheets này dữ liệu là duy nhất chứ bạn,có nghĩa là cột B hóa chất sẽ không bị trùng đúng không?
Đúng rồi bác dữ liệu hóa chất sẽ k bị trùng nhưng mà khó cái là ở cột aflatoxin từ dòng 5-200 chẳng hạn làm sao có thể tìm lọc dc dữ liệu có và loại bỏ dòng trống
 
Cột này trong miêu tả file đâu có nhắc tới đâu bạn?
Bài đã được tự động gộp:

hay ý bạn là nếu cột đó trống thì bỏ qua còn nếu có chứa dữ liệu thì lấy quá sheets BIEUMAU ?
Bài đã được tự động gộp:

Mã:
Option Explicit

Sub Danh_Sach()
Dim DS(), KQ()
Dim i As Long, K As Long, Hc As String

With Sheets("DULIEUNHAP")
    DS = .Range("B5", .Range("B" & Rows.Count).End(xlUp)).Resize(, 9).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For i = 1 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 9)
         End If
    Next
End With
Sheets("BIEUMAU").Range("B6").Resize(K, 5) = KQ
Sheets("BIEUMAU").Range("B6").Resize(K, 5).Borders.LineStyle = 1
End Sub
Nếu cột B tên hóa chất ở sheets DULIEUNHAP là không trùng thì bạn dùng code này để lấy dữ liệu ở sheets BIEUMAU
 
Cột này trong miêu tả file đâu có nhắc tới đâu bạn?
Bài đã được tự động gộp:

hay ý bạn là nếu cột đó trống thì bỏ qua còn nếu có chứa dữ liệu thì lấy quá sheets BIEUMAU ?
Bài đã được tự động gộp:

Mã:
Option Explicit

Sub Danh_Sach()
Dim DS(), KQ()
Dim i As Long, K As Long, Hc As String

With Sheets("DULIEUNHAP")
    DS = .Range("B5", .Range("B" & Rows.Count).End(xlUp)).Resize(, 9).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For i = 1 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 9)
         End If
    Next
End With
Sheets("BIEUMAU").Range("B6").Resize(K, 5) = KQ
Sheets("BIEUMAU").Range("B6").Resize(K, 5).Borders.LineStyle = 1
End Sub
Nếu cột B tên hóa chất ở sheets DULIEUNHAP là không trùng thì bạn dùng code này để lấy dữ liệu ở sheets BIEUMAU
bác có thể giúp em thêm dc k ạ (VD muốn lấy dữ liệu ở cột K (ở đây em để tên là aflatoxin) cột K có dữ liệu từ ô K5-K84) em muốn nếu em tìm dữ liệu cột K thì từ K5-K84 (Vd cột K có dữ liệu ở các dòng K8; k20; k21; 22; 23; 24;...) nếu có dữ liệu thì sẽ tham chiếu sang cột B tương ứng để điền vào Sheet BIEUMAU nếu không có dữ liệu thì bỏ qua bác ạ
 
Góp vài ý nhỏ đến chủ bài đăng:
a./ Tên trang tính của bạn quá dài, không cần thiết đến như vậy
Thay vì 'DANHMUCHOACHAT' SAO KHÔNG LÀ 'DanhMucHC''; Nếu là mình thì chỉ là 'DMuc'
b./ CSDL ở trang này thiếu cột/trường quan trọng; đó là 'Mã HC'
Nếu không có trường/cột này thì lúc nào đó CSDL của bạn sẽ trở thành đống rác không mong muốn.

Xin chào bạn & xin chúc mọi người tuần làm việc hiệu quả!
 
Mã:
Option Explicit

Sub Danh_Sach()
Dim DS(), KQ()
Dim i As Long, K As Long, Hc As String

With Sheets("DULIEUNHAP")
    DS = .Range("B5", .Range("B" & Rows.Count).End(xlUp)).Resize(, 10).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For i = 1 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" And DS(i, 10) <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 9)
         End If
    Next
End With
Sheets("BIEUMAU").Range("B6").Resize(K, 5) = KQ
Sheets("BIEUMAU").Range("B6").Resize(K, 5).Borders.LineStyle = 1
End Sub
Bạn thử code này,thêm cái điều kiện là được mà
Bài đã được tự động gộp:

Với lại bạn sửa lại tiêu đề bài viết đi.Nội dung là tổng hợp dữ liệu hay gì đó.với lại không viết hoa cả câu
 
Góp vài ý nhỏ đến chủ bài đăng:
a./ Tên trang tính của bạn quá dài, không cần thiết đến như vậy
Thay vì 'DANHMUCHOACHAT' SAO KHÔNG LÀ 'DanhMucHC''; Nếu là mình thì chỉ là 'DMuc'
b./ CSDL ở trang này thiếu cột/trường quan trọng; đó là 'Mã HC'
Nếu không có trường/cột này thì lúc nào đó CSDL của bạn sẽ trở thành đống rác không mong muốn.

Xin chào bạn & xin chúc mọi người tuần làm việc hiệu quả!
Em cảm ơn bác đã góp ý ạ em sẽ sửa
Bài đã được tự động gộp:

Mã:
Option Explicit

Sub Danh_Sach()
Dim DS(), KQ()
Dim i As Long, K As Long, Hc As String

With Sheets("DULIEUNHAP")
    DS = .Range("B5", .Range("B" & Rows.Count).End(xlUp)).Resize(, 10).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For i = 1 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" And DS(i, 10) <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 9)
         End If
    Next
End With
Sheets("BIEUMAU").Range("B6").Resize(K, 5) = KQ
Sheets("BIEUMAU").Range("B6").Resize(K, 5).Borders.LineStyle = 1
End Sub
Bạn thử code này,thêm cái điều kiện là được mà
Bài đã được tự động gộp:

Với lại bạn sửa lại tiêu đề bài viết đi.Nội dung là tổng hợp dữ liệu hay gì đó.với lại không viết hoa cả câu
em cảm ơn bác nhiều ạ để em sử dụng code
 
Em cảm ơn bác đã góp ý ạ em sẽ sửa
Bài đã được tự động gộp:


em cảm ơn bác nhiều ạ để em sử dụng code
Bác ơi cho em hỏi nếu em muốn tìm dữ liệu ở cột L, M, N, O, P thì phải thêm đoạn code nào ạ (hiện tại mới chỉ tìm ở cột K)
 
Bác ơi cho em hỏi nếu em muốn tìm dữ liệu ở cột L, M, N, O, P thì phải thêm đoạn code nào ạ (hiện tại mới chỉ tìm ở cột K)
ý bạn là muốn tìm hết các cột? vậy sao từ đầu bạn không nếu hết điều kiện lọc vậy?
If Hc <> "" And DS(i, 10) <> "" Then
đây là phần điều kiện trong code
 
Lần chỉnh sửa cuối:
ý bạn là muốn tìm hết các cột? vậy sao từ đầu bạn không nếu hết điều kiện lọc vậy?

đây là phần điều kiện trong code
Dạ em mới tập làm nên còn gà mờ lắm bác ạ ; bác có thể chỉnh đoạn code đó giúp em dc không em muốn tìm từ cột K-W em sẽ tạo 1 cái list ở cột biểu mẫu để tùy ý chọn 1 cột bất kỳ trong nhóm cột K-W ạ:
 
Chưa hiểu rõ ý muốn của bạn lắm.Bạn gửi file mẫu kết quả mong muốn đi
dạ em gửi bác ạ ( ở bên sheet biểu mẫu em có làm 1 cái list dùng để chọn xuất các cột khi mình cần sẽ ra dữ liệu) bác xem giúp em ạ
 

File đính kèm

dạ em gửi bác ạ ( ở bên sheet biểu mẫu em có làm 1 cái list dùng để chọn xuất các cột khi mình cần sẽ ra dữ liệu) bác xem giúp em ạ
ý tôi là cái list chọn cột ở đâu,và xét các cột theo tiêu chí nào.bạn làm cái kết quả cuối cùng bằng tay để tôi hiểu còn cái file bạn gửi nó chỉ có cột I J thôi à có cái chỗ chọn cột nào đâu? ví dụ bạn nêu ra chọn chộn nào kết quả ra làm sao
 
ý tôi là cái list chọn cột ở đâu,và xét các cột theo tiêu chí nào.bạn làm cái kết quả cuối cùng bằng tay để tôi hiểu còn cái file bạn gửi nó chỉ có cột I J thôi à có cái chỗ chọn cột nào đâu? ví dụ bạn nêu ra chọn chộn nào kết quả ra làm sao
em gửi lại bác file chắc em để cái cột list nó ở bên cột nên có khi bác mở bị ẩn ạ
 

File đính kèm

cột I J có cần khác rỗng mới lấy không? mà bạn có vẻ thích viết hoa cả câu :p
khác rỗng k lấy bác ạ
Hì hì, Bác cho em hỏi nếu cột J ở sheet bieumau mà code VBA sử dụng công thức luôn dc k bác
Ví dụ nó bằng cột F nhân với cột K của dữ liệu nhập có đc k bác
 
khác rỗng k lấy bác ạ
Khác rỗng không lấy??? thế bạn lấy giá trị rộng thì khác gì không lấy? Bạn hack não tôi hơi nhiều nha
Ví dụ nó bằng cột F nhân với cột K của dữ liệu nhập có đc k bác
Ý là nếu chọn cột K bên sheeets biểu mẫu thì cột J nó sẽ là lấy cột F nhân với cột K .còn chọn cột M thì lấy M nhân với F đúng không?
 
Khác rỗng không lấy??? thế bạn lấy giá trị rộng thì khác gì không lấy? Bạn hack não tôi hơi nhiều nha

Ý là nếu chọn cột K bên sheeets biểu mẫu thì cột J nó sẽ là lấy cột F nhân với cột K .còn chọn cột M thì lấy M nhân với F đúng không?
dạ đúng rồi bác
 
đầu tiên bạn thử lấy hai cái đó nhận với nhau trên bảng tính xem kiểu dữ liệu hiện tại của bạn có nhận được không.còn dữ liệu chuận xin trả lời là có
Bài đã được tự động gộp:

1605581149342.png
Bạn xem giúp tôi hai cái này có gì khác nhau không?
 
đầu tiên bạn thử lấy hai cái đó nhận với nhau trên bảng tính xem kiểu dữ liệu hiện tại của bạn có nhận được không.còn dữ liệu chuận xin trả lời là có
Bài đã được tự động gộp:

View attachment 249489
Bạn xem giúp tôi hai cái này có gì khác nhau không?
sau em sẽ chỉnh về 1 dạng thôi bác chắc em đánh nhầm vì nó sẽ là 0,1
 

Vầy đi
Mã:
 Option Explicit

Sub PHUONGPHAP()
Dim DS(), KQ(), PP()
Dim i As Long, j As Long, K As Long, Hc As String, DK As String
DK = Sheets("BIEUMAU").Range("C3").Value
'---------------------------------------------------------------------------------
With Sheets("DULIEUNHAP")
    DS = .Range("B4", .Range("B" & Rows.Count).End(xlUp)).Resize(, 22).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For j = 10 To UBound(DS, 2)
        If DS(1, j) = DK Then
            Exit For
        End If
    Next
'---------------------------------------------------------------------------------
    For i = 2 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" And DS(i, j) <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 5) * DS(i, j)
          
         End If
    Next
End With
'---------------------------------------------------------------------------------
With Sheets("BIEUMAU")
        .Range("B6:F" & .Range("B" & Rows.Count).End(xlUp).Row + 5).ClearContents
    If K >= 1 Then
        .Range("B6").Resize(K, 5) = KQ
        .Range("B6").Resize(K, 5).Borders.LineStyle = 1
    End If
End With
End Sub
Bài đã được tự động gộp:

Bạn thử nhập vào ô A1 = 0,1
Nhập vào ô B1 =ISNUMBER(A1)
Chắc chắn hơn nữa
Nhập vào ô A2= 500
Nhập vào ô B2=A1*A2
Rồi xem dữ liệu của bạn để dạng 0,1 nó sẽ ra sao khi nhân
 
Lần chỉnh sửa cuối:
Vầy đi
Mã:
 Option Explicit

Sub PHUONGPHAP()
Dim DS(), KQ(), PP()
Dim i As Long, j As Long, K As Long, Hc As String, DK As String
DK = Sheets("BIEUMAU").Range("C3").Value
'---------------------------------------------------------------------------------
With Sheets("DULIEUNHAP")
    DS = .Range("B4", .Range("B" & Rows.Count).End(xlUp)).Resize(, 22).Value
    ReDim KQ(1 To UBound(DS), 1 To 5)
    For j = 10 To UBound(DS, 2)
        If DS(1, j) = DK Then
            Exit For
        End If
    Next
'---------------------------------------------------------------------------------
    For i = 2 To UBound(DS)
            Hc = DS(i, 1)
         If Hc <> "" And DS(i, j) <> "" Then
                K = K + 1
            KQ(K, 1) = K
            KQ(K, 2) = DS(i, 1)
            KQ(K, 3) = DS(i, 7)
            KQ(K, 4) = DS(i, 8)
            KQ(K, 5) = DS(i, 5) * DS(i, j)
         
         End If
    Next
End With
'---------------------------------------------------------------------------------
With Sheets("BIEUMAU")
        .Range("B6:F" & .Range("B" & Rows.Count).End(xlUp).Row + 5).ClearContents
    If K >= 1 Then
        .Range("B6").Resize(K, 5) = KQ
        .Range("B6").Resize(K, 5).Borders.LineStyle = 1
    End If
End With
End Sub
Bài đã được tự động gộp:


Bạn thử nhập vào ô A1 = 0,1
Nhập vào ô B1 =ISNUMBER(A1)
Chắc chắn hơn nữa
Nhập vào ô A2= 500
Nhập vào ô B2=A1*A2
Rồi xem dữ liệu của bạn để dạng 0,1 nó sẽ ra sao khi nhân
Dạ vâng để em thử ạ
 
Chủ đề này có mỗi tôi với bạn mà tới tận bài 27 chưa xong vấn đề.và có một số lưu ý với bạn như sau:
1.Khi bạn nếu vấn đề thì nếu vấn đề rõ ràng.dữ liệu gốc và kết quả mong muốn kèm theo điều kiện yêu cầu để lấy ra kết quả đó.Trình bày không rõ ràng người khác không muốn suy nghĩ ra đủ trường hợp làm sao cho đúng suy nghĩ của bạn đâu
2.Bạn nêu hết một lượt tất cả yêu cầu không nên mỗi bài nêu một cái thứ nhất mất công sửa code thứ hai có những lúc hướng đi của logic code còn bị đổi theo từng yêu cầu
3.Lưu ý về hình thức viết bài của bạn.nội quy diễn đàn có đấy
*mod nào đi qua đi qua sửa lại hộ tiêu đề bài viết
 

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

Back
Top Bottom