MANHTS
Thành viên chính thức


- Tham gia
- 16/11/20
- Bài viết
- 63
- Được thích
- 4
Đoạn này không hiểu cho lắmmuốn tìm và xuất ra theo danh sách em đã tại list sẵn
Vâng em sẽ lưu ý:Đ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
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?dữ liệu từ SHEET DULIEUNHAP
Đú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ốngsheets 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?
Cột này trong miêu tả file đâu có nhắc tới đâu bạn?cột aflatoxin
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
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 ạ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:
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 BIEUMAUMã: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
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
Em cảm ơn bác đã góp ý ạ em sẽ sửaGó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 nhiều ạ để em sử dụng codeBạn thử code này,thêm cái điều kiện là được mà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à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
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)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ạ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?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)
đây là phần điều kiện trong codeIf Hc <> "" And DS(i, 10) <> "" Then
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 ạ:ý 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
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 đimuốn tìm từ cột K-W em sẽ tạo 1 cái list ở cột biểu mẫu
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 ạ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
ý 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 saodạ 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 ạ
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 ạý 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
Rồi nêu điều kiện lọc đi bạn ,khác rỗng là lấy hả?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 ạ
ĐÚNG RỒI BÁC KHÁC RỖNG LÀ LẤY BÁC ẠRồi nêu điều kiện lọc đi bạn ,khác rỗng là lấy hả?
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ĐÚNG RỒI BÁC KHÁC RỖNG LÀ LẤY BÁC Ạ
khác rỗng k lấy bác ạ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![]()
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 nhakhác rỗng k lấy 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?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
dạ đúng rồi bácKhá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?
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đầ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?
nó sẽ là 0,1
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ạn thử nhập vào ô A1 = 0,1vì nó sẽ là 0,1
Dạ vâng để em thử ạ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