vnlinhtinh
Thành viên mới

- Tham gia
- 11/4/13
- Bài viết
- 27
- Được thích
- 6
Hổng biết đúng ý bạn chưa ?Điều kiện nằm ở trên các cell khác nhau trên 1 Row.
Mục tiêu gồm các cell trên ghép lại từ trái qua phải. Như ví dụ kèm theo là 4 trường hợp.
Mong mọi người lập hàm giúp.
Cảm ơn!
Hình như hổng phải ý này đâu.Hổng biết đúng ý bạn chưa ?
Do tác giả hát bài" Tình mờ khói sương "nên em cũng chỉ ăn ốc thôiHình như hổng phải ý này đâu.
Sub TimKienTheoNhieuDieuKien()
Dim Rng As Range, sRng As Range, Cls As Range, Arr()
Dim J As Long, W As Integer
Dim MyAdd As String, MyTxt As String
Set Rng = Range([G7], [G65500].End(xlUp))
ReDim Arr(1 To Rng.Rows.Count, 1 To 3)
[P8].Resize(Rng.Rows.Count, 3).Value = Arr()
Arr(1, 1) = "STT": Arr(1, 2) = "Kêt Qua Tìm Ra:"
Arr(1, 3) = "Dòng": W = 1
For Each Cls In Range([I26], [I26].End(xlToRight))
MyTxt = MyTxt & " " & Cls.Value
Set sRng = Rng.Find(Trim(MyTxt), , xlFormulas, xlPart)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
W = W + 1: Arr(W, 1) = W - 1
Arr(W, 2) = MyTxt: Arr(W, 3) = sRng.Row
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next Cls
If W Then
[P8].Resize(W, 3).Value = Arr()
End If
End Sub
Hổng biết có đúng ý gia chủ chưa nữa !?Bạn tham khảo file:
Cuối cùng cũng chưa biết yêu cầu như thế nào luôn.Ặc! ! ! !
Em mù về VBA, lắp code cũng chả biết chạy nó kiểu gì.
Bác tả giúp cách vận hành nó với!
Với lại Em muốn nó là hàm Excel vì cái yêu cầu này nó nằm trong một chuỗi các hàm logic khác.
Dùng mấy cái món: =if(vloockup(...);"";if(vloockup(.....) cũng tìm được nhưng công thức nó dài khủng khiếp. Kết hợp với một số hàm khác có khi đơ cả máy.
Tại bác hiểu nhầm ý Em!Xin nói là: Iêu cầu của tác gia bài đăng không dễ làm bằng công thức
Chắc tại Em truyền đạt không tốtHổng biết có đúng ý gia chủ chưa nữa !?
Cuối cùng cũng chưa biết yêu cầu như thế nào luôn.
Chắc lỗi do mình chậm hiểu sao ấy ?
Nếu excel chưa có hàm Textjoin thì nối tay các ô điều kiện, thử với công thức này lấy số dòng:Điều kiện nằm ở trên các cell khác nhau trên 1 Row.
Mục tiêu gồm các cell trên ghép lại từ trái qua phải. Như ví dụ kèm theo là 4 trường hợp.
Mong mọi người lập hàm giúp.
Cảm ơn!
=LOOKUP(1000,MATCH(MID(I26&" "&J26&" "&K26&" "&L26&" ",1,FIND("|",SUBSTITUTE(I26&" "&J26&" "&K26&" "&L26&" "," ","|",ROW($1:$4)))-1),$G$1:$G$1000,))
=LOOKUP(1000,MATCH(MID(name,1,FIND("|",SUBSTITUTE(name," ","|",ROW($1:$4)))-1),$G$1:$G$1000,))
Công thứcĐiều kiện nằm ở trên các cell khác nhau trên 1 Row.
Mục tiêu gồm các cell trên ghép lại từ trái qua phải. Như ví dụ kèm theo là 4 trường hợp.
Mong mọi người lập hàm giúp.
Cảm ơn!
=LOOKUP(10^6,MATCH(LEFT(I26&" "&J26&" "&K26&" "&L26,MMULT(LEN(I26:L26),--(COLUMN(A1:D4)>=ROW(A1:D4)))+COLUMN($A:$D)-1),$G$1:$G$100,))
Người mà không biết sửa lỗi của mình, thì là thánh chứ không fải 'Người'!-Phần cột là dữ liệu nhập, có thể nhập bị thừa khoảng trắng (Bình thường thôi, Người chứ chả phải Thánh) và như thế công thức sẽ báo lỗi #N/A còn bên code của bác @SA_DQ thì ...trắng toát. Em cần xử lý cái này
He he! Việc bắt/sửa lỗi nhập liệu trong một chương trình là bình thường mà BácNgười mà không biết sửa lỗi của mình, thì là thánh chứ không fải 'Người'!
Không có kiểu vận hành CSDL vô chính fủ như vậy được?
Hoại chăng là nhập dòng trên (hay dưới) nó; Sau đó xài công thức TRIM() gì đó của bạn & chuyện này là chuyện của bạn.
Nếu đã có chỉ số rồi thì INDEX thôi.P/s: Bác batman1 mới cho Em công thức lấy vị trí, còn công thức nhặt nguyên con chưa có. Bác cho xin nốt nhé!
=INDEX($G$1:$G$100;LOOKUP(...);)
Vầng Em hiểu! Hy vọng là Bác có công thức lấy kết quả "nguyên con" đỉnh cao hơn nên ... hóng.Nếu đã có chỉ số rồi thì INDEX thôi.
Mã:=INDEX($G$1:$G$100;LOOKUP(...);)