Giúp code tìm vị trí hàng của 1 chuỗi trong 1 vùng

Liên hệ QC

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE !.Đánh chử thì hơi lòng vòng em gửi hình mọi người xem sẽ hiểu ngay .( Lưu ý File đính kèm e demo cho mọi người hiểu chứ File thực tế dử liệu của em khoảng 30.000 dòng ) XIn chân thành cảm ơn !

1544282122921.png
 

File đính kèm

Upvote 0
Cảm ơn bác @SA_DQ đã chỉ dẫn thêm cho cháu cách sử dụng mảng.
Dạ vâng, nếu dữ liệu nhiều thì chuyển function của bác thành sub ạ:

Mã:
Sub LKDong2()
Dim Arr()
Dim J As Long, W As Long
Dim lastRow As Long, txtFind As Variant
lastRow = Cells(Rows.Count, "b").End(xlUp).Row
Arr() = Range("b3:b" & lastRow).Value
txtFind = Range("e3").Value
ReDim dArr(1 To UBound(Arr()), 1 To 1) As Variant
For J = 1 To UBound(Arr())
    If UCase$(Arr(J, 1)) = UCase$(txtFind) Then
        W = W + 1
        dArr(W, 1) = CStr(J) + 2 'Xuất phát từ dòng 3 nên +2
    End If
Next J
Range("h3").Resize(UBound(dArr())) = dArr()
End Sub

Bác oanh thơ giúp em cái trường hợp theo Cột thì phải làm sao
1544346939825.png
Bài đã được tự động gộp:

UCase$ Cách viết này thật là khó ưa.
UCase là xử lý chuỗi rồi. Sao phải "làm giàu cho nó vậy" . Có gì lợi hại chăng @Nguyễn Hoàng Oanh Thơ
Trường hợp theo cột thì sao bác. Giúp em với
1544346976228.png
 
Upvote 0
Bác oanh thơ giúp em cái trường hợp theo Cột thì phải làm sao
View attachment 209049
Bài đã được tự động gộp:


Trường hợp theo cột thì sao bác. Giúp em với
View attachment 209050

Bạn thử code sau ạ:
Mã:
Option Explicit

Sub Macro2()
    Dim txtFind As Variant, lastCol As Long, i As Long, cell As Range
    txtFind = Range("d5").Value: lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
    For Each cell In Range("d3").Resize(, lastCol)
        If UCase(cell.Value) = UCase(txtFind) Then
            Range("C8").Offset(i).Value = cell.Column
            i = i + 1
        End If
    Next cell
End Sub
 
Upvote 0
Bạn thử code sau ạ:
Mã:
Option Explicit

Sub Macro2()
    Dim txtFind As Variant, lastCol As Long, i As Long, cell As Range
    txtFind = Range("d5").Value: lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
    For Each cell In Range("d3").Resize(, lastCol)
        If UCase(cell.Value) = UCase(txtFind) Then
            Range("C8").Offset(i).Value = cell.Column
            i = i + 1
        End If
    Next cell
End Sub

Cảm ơn anh. Anh có thể lại sữa lại theo dạng mãng giống như code này
Mã:
Sub LKDong2()
 Dim Arr()
 Dim J As Long, W As Long
 Dim lastRow As Long, txtFind As Variant
 lastRow = Cells(Rows.Count, "b").End(xlUp).Row
 Arr() = Range("b3:b" & lastRow).Value
 txtFind = Range("e3").Value
 ReDim dArr(1 To UBound(Arr()), 1 To 1) As Variant
 For J = 1 To UBound(Arr())
    If UCase$(Arr(J, 1)) = UCase$(txtFind) Then
        W = W + 1
        dArr(W, 1) = CStr(J) + 2 'Xuất phát từ dòng 3 nên +2
    End If
 Next J
 Range("h3").Resize(UBound(dArr())) = dArr()
End Sub
 
Upvote 0
Cảm ơn anh. Anh có thể lại sữa lại theo dạng mãng giống như code này
Mã:
Sub LKDong2()
Dim Arr()
Dim J As Long, W As Long
Dim lastRow As Long, txtFind As Variant
lastRow = Cells(Rows.Count, "b").End(xlUp).Row
Arr() = Range("b3:b" & lastRow).Value
txtFind = Range("e3").Value
ReDim dArr(1 To UBound(Arr()), 1 To 1) As Variant
For J = 1 To UBound(Arr())
    If UCase$(Arr(J, 1)) = UCase$(txtFind) Then
        W = W + 1
        dArr(W, 1) = CStr(J) + 2 'Xuất phát từ dòng 3 nên +2
    End If
Next J
Range("h3").Resize(UBound(dArr())) = dArr()
End Sub

Oanh Thơ còn bỡ ngỡ nhiều về mảng nhất là cái vụ ReDim , hoặc xác định giới hạn trên của mảng 2 chiều nên ngại không dám đưa code nên,
@minhtuan55 thử xem,nhờ các bạn góp ý thêm ạ:
Mã:
Sub LKDong3()
 Dim Arr(), dArr()
 Dim J As Long, W As Long
 Dim lastCol As Long, txtFind As Variant
 lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
 If lastCol < 4 Then Exit Sub
 Arr() = Range("d3").Resize(, lastCol - 3).Value
 txtFind = Range("d5").Value
 ReDim dArr(1 To lastCol - 3, 1 To 1)
 For J = 1 To lastCol - 3
    If UCase$(Arr(1, J)) = UCase$(txtFind) Then
        W = W + 1
        dArr(W, 1) = CStr(J) + 3
    End If
 Next J
 Range("d8").Resize(UBound(dArr())) = dArr()
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Đâu có xê cọng cọng vào đây vậy?
Ở đây bác :

Thật ra mình viết thì những cái trên diễn đàn này không thể nào làm 1 ngày 1 bửa là xong. Ví dụ như hệ thống phần Khách sạn tự động kết nối PLC với phần mềm. Khi khách vào check in thì phóng đó có điện....Do mình chuyên bên Phần cứng PLC và lập trình C++ . nên mọi người thông cảm về trình độ VBA cho mình. Mình xin chân thành cảm ơn những ai đã giúp mình. Mình đi chùa mình luôn cầu chúc cho những ai giúp mình. Nếu ai đang đi xe máy thì sẽ có 1 ngày lên cơn Mada 6 như Mình. Mình thật tâm cảm ơn. Đặc biệt các bác Lão làng: Ndu, Vetmini, Quangha,Hai lúa miền tây, Hesanbi,Kieumanh...xin cảm ơn chân thành cả nhà GPE, Chúc cả nhà 1 ngày Sunday vui vẽ
Bài đã được tự động gộp:



cảm ơn bác đã giúp. bác đoán sai rồi. Mình ứng dụng cho việt Lành mạnh. Việt lành mạnh của mình VÔ cùng phức tạp nên không thể giải thích cho bạn hiểu. Bạn cho mình sdt để mình mời 1 kèo Massge được không. Nhà mình ở Phú Nhuận
 
Upvote 0
C++ khác chi VBA, tôi không hiểu C++, vậy chủ topic viết hàm nhỏ này dạng C++ để giao lưu với mọi người nha
Chú thích thì Nhích luôn. Đây là đoạn code Connnect với PLC S700 Simen để điều khiển Motor theo Phương thức Sao Tam giác. Nếu Moror Quá tải sao 1 phút Sẽ Off

1544404518730.png


1544404433918.png
 
Upvote 0
À ra vậy.
Tội nghiệp nhỉ. Ba cái lập trình nhúng và điều khiển không nhờ mấy diễn đàn viết code giùm được cho nên phải tự viết.
Ủa mà lầm rồi. Người ta tự viết xê cọng cọng cho nên sắm "mát da xích" (ấy là hòi đó, bây giờ chắc lên Lăn Cùi Dơ rồi). Mấy người viết VBA giùm ở GPE cong đít cỡi xe máy.
Suy ra: vê bê a không kiếm được tiền cho nên ngừoi ta chả buồn học. Thì giờ để viết xê cọng cọng hốt tiền xây nhà lầu. Chỉ có mấy người dê pê e tài khôn xúc tép nuôi cò.
 
Upvote 0
À ra vậy.
Tội nghiệp nhỉ. Ba cái lập trình nhúng và điều khiển không nhờ mấy diễn đàn viết code giùm được cho nên phải tự viết.
Ủa mà lầm rồi. Người ta tự viết xê cọng cọng cho nên sắm "mát da xích" (ấy là hòi đó, bây giờ chắc lên Lăn Cùi Dơ rồi). Mấy người viết VBA giùm ở GPE cong đít cỡi xe máy.
Suy ra: vê bê a không kiếm được tiền cho nên ngừoi ta chả buồn học. Thì giờ để viết xê cọng cọng hốt tiền xây nhà lầu. Chỉ có mấy người dê pê e tài khôn xúc tép nuôi cò.

Vấn đề em hỏi thiệt ra nó chỉ 0.01 % của ứng dụng em. bác nói như cái gì em cũng nhờ hết 100%.. Mà đúng ra diễn đàn phải cảm ơn những con người như em. Vì em hỏi ra những vẫn để chưa ai hỏi. Làm tăng dung lượng kiến thức cho diễn đàn. phải đụng chạm thực tế em vướn mắc chổ nào thì em hỏi. mấy bác có lòng tốt thì giúp em.Em luôn cầu chúc công đức VÔ LƯợng Kiếp cho mấy bác ( Thân tâm thanh tịnh). Còn CỞi mada 6 hay cởi xe máy là do tài kinh doanh của mổi người.

Sub kiemtien ()
If Trình độ bạn = "Giỏi" and Bạn = "Linh động trong thực tế" Or
bằng cấp không quan tâm then
Cởi = mada 6 ( 1.1 tỷ )
Else
Cởi = Xe máy ( <= 100 củ khoai )
endif
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi xem kỹ lại rồi nhé mọi người. Từ bài #1 đến giờ tôi chưa viết dòng cốt nào. Tức là chưa hưởng được 1 tí công đức hay cầy đức nào; suy ra, khỏi phải cám ơn chủ thớt.
Quý vị nào có ra công đức hay cầy đức cống đức củ đức ở đây thì tự biết liệu mà cám ơn !!!

Chú: vào cái diễn đàn xê cọng cọng nào đó thì cũng sẽ thấy một đống công dức chứ gì. Người giỏi đem đàu heo bên này nấu cháo bên kia thì sẽ có mát da mà cỡi. Kẻ nai lưng cho mượn đầu heo thì còn phải mang ơn - cho mượn đầu heo thì tít đức, ủa quên tích đức
 
Upvote 0
Tôi xem kỹ lại rồi nhé mọi người. Từ bài #1 đến giờ tôi chưa viết dòng cốt nào. Tức là chưa hưởng được 1 tí công đức hay cầy đức nào; suy ra, khỏi phải cám ơn chủ thớt.
Quý vị nào có ra công đức hay cầy đức cống đức củ đức ở đây thì tự biết liệu mà cám ơn !!!

Chú: vào cái diễn đàn xê cọng cọng nào đó thì cũng sẽ thấy một đống công dức chứ gì. Người giỏi đem đàu heo bên này nấu cháo bên kia thì sẽ có mát da mà cỡi. Kẻ nai lưng cho mượn đầu heo thì còn phải mang ơn - cho mượn đầu heo thì tít đức, ủa quên tích đức
Chuyện thường phố huyện bác ơi, ở ta giờ có khi người kêu hoàn cảnh từ thiện khổ khổ, rồi sau đó bật ngửa ra là: những người góp từ thiện còn nghèo hơn người khổ đó.

Nên giúp hãy từ thiện phải chọn đúng nơi đúng chỗ.

Còn cứ miết như diễn đàn này chỉ làm cho mọi người lười đi, lười học (hỏi bài tập); lười code, lười kiếm giải pháp thì đem đi nhờ (kiếm tiền) - rồi lại kể là ban ơn câu hỏi. Nên có khi dẹp các kiểu giúp vậy thì làm cho mọi người tiến hơn.
 
Upvote 0
Chuyện thường phố huyện bác ơi, ở ta giờ có khi người kêu hoàn cảnh từ thiện khổ khổ, rồi sau đó bật ngửa ra là: những người góp từ thiện còn nghèo hơn người khổ đó.

Nên giúp hãy từ thiện phải chọn đúng nơi đúng chỗ.

Còn cứ miết như diễn đàn này chỉ làm cho mọi người lười đi, lười học (hỏi bài tập); lười code, lười kiếm giải pháp thì đem đi nhờ (kiếm tiền) - rồi lại kể là ban ơn câu hỏi. Nên có khi dẹp các kiểu giúp vậy thì làm cho mọi người tiến hơn.

Vậy diễn đàn để làm gì a. Có diễn đàn mà không cho Người ta hỏi . Mình giúp người khác mình sẽ có công đức. Còn a giúp người khác mà ganh ghét thì không hay. tặng bác GIúp người khác coi như đôi dép bỏ
Bài đã được tự động gộp:

Tôi xem kỹ lại rồi nhé mọi người. Từ bài #1 đến giờ tôi chưa viết dòng cốt nào. Tức là chưa hưởng được 1 tí công đức hay cầy đức nào; suy ra, khỏi phải cám ơn chủ thớt.
Quý vị nào có ra công đức hay cầy đức cống đức củ đức ở đây thì tự biết liệu mà cám ơn !!!

Chú: vào cái diễn đàn xê cọng cọng nào đó thì cũng sẽ thấy một đống công dức chứ gì. Người giỏi đem đàu heo bên này nấu cháo bên kia thì sẽ có mát da mà cỡi. Kẻ nai lưng cho mượn đầu heo thì còn phải mang ơn - cho mượn đầu heo thì tít đức, ủa quên tích đức
bác sai quá rồi nha. Nên sám hối nha. Vi phạm công đức là Đức Phật sẽ không thích đâu nha. Công việc của Bác là giúp đở người nghèo kiến thức như em. bác cứ giúp bác sẻ hưởng công đức cho con cháu. cố lên nha Bác
Bài đã được tự động gộp:

Chuyện thường phố huyện bác ơi, ở ta giờ có khi người kêu hoàn cảnh từ thiện khổ khổ, rồi sau đó bật ngửa ra là: những người góp từ thiện còn nghèo hơn người khổ đó.

Nên giúp hãy từ thiện phải chọn đúng nơi đúng chỗ.

Còn cứ miết như diễn đàn này chỉ làm cho mọi người lười đi, lười học (hỏi bài tập); lười code, lười kiếm giải pháp thì đem đi nhờ (kiếm tiền) - rồi lại kể là ban ơn câu hỏi. Nên có khi dẹp các kiểu giúp vậy thì làm cho mọi người tiến hơn.
Bác nói lười. Nghe mà mắc cười. Vậy từ đâu người ta ra câu hỏi cho bác trả lời. Và mình cũng nói Thẳng với bác luôn. Mình đăng ký diễn đàn là để học hỏi , cái nào biết thì thôi, cái nào không biết được hỏi. bác không thích thì không cần trả lời. vấn để mình hỏi là 0.01 % công việc của mình thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
bác sai quá rồi nha. Nên sám hối nha. Vi phạm công đức là Đức Phật sẽ không thích đâu nha. Công việc của Bác là giúp đở người nghèo kiến thức như em. bác cứ giúp bác sẻ hưởng công đức cho con cháu. cố lên nha Bác
...
Tôi cứ ngỡ Đức Phật đã vượt qua lục dục ái tình rồi. Bây giờ lại xảy ra chuyện thích hay không thíc nữa.
Sợ quá đi thôi, mai đi chùa cúng sám hối. Ủa mà làm quái gì có tiền để cúng.
Bạn nào biết chùa nào cần học Tin Học chỉ cho tôi đến làm vài buổi học gỡ tội nhé. Để tôi chết xuống a tỳ tội nghiệp.

...
Còn cứ miết như diễn đàn này chỉ làm cho mọi người lười đi, lười học (hỏi bài tập); lười code, lười kiếm giải pháp thì đem đi nhờ (kiếm tiền) - rồi lại kể là ban ơn câu hỏi. Nên có khi dẹp các kiểu giúp vậy thì làm cho mọi người tiến hơn.
Bạn cỡi xe gì? có xịn hơn mát da xích hon mà bảo người ta lười.
Rõ ràng là người ta làm việc rất hiệu quả, dùng 0,01% công sức để nhờ VBA.; 99,99% chỗ còn lại dùng cho công việc hái ra tiền. Chỉ có mấy ngừoi ở đây ham công đức, làm giùm còn được phán cho là:
(Quan tâm bằng cấp) Và ( (Dở) Hoặc (Kém Linh Động Trong Thực Tế) )
(lô gic ngược của câu sau)
If Trình độ bạn = "Giỏi" and Bạn = "Linh động trong thực tế" Or bằng cấp không quan tâm then
 
Upvote 0
Rõ ràng điều kiện là sai
Mã:
Sub kiemtien ()
If Trình độ bạn = "Giỏi" and Bạn = "Linh động trong thực tế" Or bằng cấp không quan tâm then
Cởi = mada 6 ( 1.1 tỷ )
Else
Cởi = Xe máy ( <= 100 củ khoai )
endif
End Sub
Or bằng cấp không quan tâm có nghĩa vd. là Or bằng cấp > -1. Cái này ai cũng thỏa.

Nếu người không Giỏi và cũng không "Linh động trong thực tế", và bằng cấp lớp 1 thì

Trình độ bạn = "Giỏi" and Bạn = "Linh động trong thực tế" Or bằng cấp không quan tâm = FALSE and FALSE Or TRUE = TRUE.

Tức bằng cấp lớp 1, không Giỏi, không "Linh động trong thực tế" thì Cỡi = mada 6 ( 1.1 tỷ )

Có gì đó sai sai.

Tôi đã từng nuốt nước bọt ừng ực, và ghen tức nổ phổi, khi nhìn người ta cưỡi Mazda. Còn chưa được nhìn Mada bao giờ
 
Upvote 0
...
Tôi đã từng nuốt nước bọt ừng ực, và ghen tức nổ phổi, khi nhìn người ta cưỡi Mazda. Còn chưa được nhìn Mada bao giờ
Một tỷ mốt thì ma da hay quỷ da tôi cũng nuốt nước bọt như thường.
...
Có gì đó sai sai.
...
"Linh động trong thực tế" ở chỗ đó đấy bác.
Nếu dễ hiểu thì ai cũng cỡi xe 1 tỷ hết rồi.
 
Upvote 0
Web KT

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

Back
Top Bottom