hiénlinh197
Thành viên tiêu biểu

- Tham gia
- 26/5/09
- Bài viết
- 491
- Được thích
- 113
Dùng hàm UDF của các Thầy xemNhờ các bạn viết giúp hàm như file đính kèm
=SUBSTITUTE(SUBSTITUTE(TEXT(SUMPRODUCT(B3:B12*(C3:C12<C14)*10^(10-B3:B12*(C3:C12<C14))),REPT("0"";""",10)),"0;","")&"#",";#","")
Công thức vĩ đâị quá bạnThử 1 cách học lỏm, giới hạn dưới 9 số:
Mã:=SUBSTITUTE(SUBSTITUTE(TEXT(SUMPRODUCT(B3:B12*(C3:C12<C14)*10^(10-B3:B12*(C3:C12<C14))),REPT("0"";""",10)),"0;","")&"#",";#","")
Cảm ơn bạnDùng hàm UDF của các Thầy xem
Dùng thử hàm này xem sao.Nhờ các bạn viết giúp hàm như file đính kèm
Function noichuoi(ByVal mang As Variant, ByVal dk As Long, Optional ByVal so As Integer = 1, Optional ByVal so1 As Integer = 2)
Dim arr, i As Integer, s As String
arr = mang.Value
For i = 1 To UBound(arr, 1)
If arr(i, so1) < dk Then
If s = Empty Then s = arr(i, so) Else s = s & ";" & arr(i, so)
End If
Next i
noichuoi = s
End Function
=noichuoi($B$3:$C$12,C14)
Công thức trực tiếp, thử 400 cho tất cả các số , kết quả thiếuThử 1 cách học lỏm, giới hạn dưới 9 số hoặc theo file:
Mã:=SUBSTITUTE(SUBSTITUTE(TEXT(SUMPRODUCT(B3:B12*(C3:C12<C14)*10^(10-B3:B12*(C3:C12<C14))),REPT("0"";""",10)),"0;","")&"#",";#","")
Thay cột phụ:Công thức trực tiếp, thử 400 cho tất cả các số , kết quả thiếu
Dùng cột phụ, thử chỉ dùng 1 hàm If hoặc 2 If cho cột phụ và kết quả không dùng hàm
D3=IF(OR(C3="",C3>=C$14),D2,IFERROR(LOOKUP(2,1/COUNTIF(C$14,">"&C$2:C2),D$2:D2)&";","")&B3)
Dùng cột phụ cách khácThay cột phụ:
Và kết quả bằng D12.Mã:D3=IF(OR(C3="",C3>=C$14),D2,IFERROR(LOOKUP(2,1/COUNTIF(C$14,">"&C$2:C2),D$2:D2)&";","")&B3)
Vậy chứng tỏ mang là Range rồi --> ByVal mang As Range.Function noichuoi(ByVal mang As Variant,...)
Dim arr, i As Integer, s As String
arr = mang.Value
Hàm người dùng chỉ nên bẫy lỗi những nơi rất cần thiết. Những lỗi khác cứ cho nó nảy #N/A.Vậy chứng tỏ mang là Range rồi --> ByVal mang As Range.
Và bẫy lỗi arr khi mang chỉ có 1 cell.
Cảm ơn bạnDùng thử hàm này xem sao.
Mã:Function noichuoi(ByVal mang As Variant, ByVal dk As Long, Optional ByVal so As Integer = 1, Optional ByVal so1 As Integer = 2) Dim arr, i As Integer, s As String arr = mang.Value For i = 1 To UBound(arr, 1) If arr(i, so1) < dk Then If s = Empty Then s = arr(i, so) Else s = s & ";" & arr(i, so) End If Next i noichuoi = s End Function
Mã:=noichuoi($B$3:$C$12,C14)
Nhờ bạn tinh chỉnh lại hàm, mình thấy có một số vấn đề sai saiDùng thử hàm này xem sao.
Mã:Function noichuoi(ByVal mang As Variant, ByVal dk As Long, Optional ByVal so As Integer = 1, Optional ByVal so1 As Integer = 2) Dim arr, i As Integer, s As String arr = mang.Value For i = 1 To UBound(arr, 1) If arr(i, so1) < dk Then If s = Empty Then s = arr(i, so) Else s = s & ";" & arr(i, so) End If Next i noichuoi = s End Function
Mã:=noichuoi($B$3:$C$12,C14)
Bạn nói rõ sai sai ở chỗ nào nhé.Mình không thấy
Sai ở chỗ những ô trống thì nó cũng lấy hết toàn bộ cột bên trái bạnBạn nói rõ sai sai ở chỗ nào nhé.Mình không thấy.Bạn nói chi tiết nhé.
Bạn thêm điều kiện này vào nữa.Xem code nhé.
Function DK_noi(ByVal mang As Variant, ByVal dk As Long, Optional ByVal so As Integer = 1, Optional ByVal so1 As Integer = 2)
Dim arr, i As Integer, s As String
arr = mang.Value
For i = 1 To UBound(arr, 1)
If arr(i, so1) > dk And Len(arr(i, so1)) > 0 Then 'thay doi dau khi thay doi dieu kien
If s = Empty Then s = arr(i, so) Else s = s & ";" & arr(i, so)
End If
Next i
DK_noi = s
End Function
Cảm ơn bạnBạn thêm điều kiện này vào nữa.Xem code nhé.
Mã:Function DK_noi(ByVal mang As Variant, ByVal dk As Long, Optional ByVal so As Integer = 1, Optional ByVal so1 As Integer = 2) Dim arr, i As Integer, s As String arr = mang.Value For i = 1 To UBound(arr, 1) If arr(i, so1) > dk And Len(arr(i, so1)) > 0 Then 'thay doi dau khi thay doi dieu kien If s = Empty Then s = arr(i, so) Else s = s & ";" & arr(i, so) End If Next i DK_noi = s End Function