Cần giúp đỡ về tìm giá trị trong 1 cell và show ra kết quả các dòng có liên quan (1 người xem)

Liên hệ QC

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

thangcuti

Thành viên mới
Tham gia
20/11/08
Bài viết
18
Được thích
0
Thân chào các bạn,

Mình nhờ giúp đỡ xíu về Excel, VBA.

Hiện tại, mình đã nhập file inventory, và muốn tìm theo số Invoice thì sẽ xuất tất cả những dòng như G.W, N.W, COL, DESCRIPTION theo 1 dòng - và , và những dòng còn lại như P.O, Part No, Carton No. sẽ xuất ra ở dòng bên trái theo chiều dọc.

Mình đã tìm hiểu DropDown list, DataValidation, nhưng không cái nào chay được cả. Nên định nhờ cao thủ giúp mình việc này.

Hi vọng các bạn có thể giúp đỡ, hoặc chỉ mình cần ngâm cứu ntn mình sẽ tra google học tiếp. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Cám ơn nhiều,
 

File đính kèm

Mình dùng công thức này, nhưng nó không lấy được các giá trị tiếp theo. Mọi người hướng dẫn giúp với...

Sheet "P.O" ==> nhập giá trị vào ô J5 thì ô C19, D19 và các ô còn lại cũng sẽ update theo nhé, cũng sẽ lấy giá trị từ sheet "Feb12" và update tự động (mình đã NOTE lại cho các bạn xem trong file).

Vấn đề ở đây là cái Invoice có nhiều mặt hàng, mà cái công thức của mình thì nó chỉ lấy cái đầu ah, có cách nào để nó lấy các phần còn lại trong sheet "Feb12" hay không???

Công thức tham khảo từ bác Tuấn nhé:
=IF($J5="","",VLOOKUP($J5,'Feb12'!$F$4:$Q$186,4,0))
 

File đính kèm

Có ai xem dùm với, mình research google rồi vẫn chưa có kết quả...

Mod xem dùm bài viết nhé,
 
Cám ơn bạn nhé,

Cho mình hỏi thêm về công thức có được không?

Vì mình mới add thêm 1 số record mới, thì nó báo lỗi macro bắt debug "line 91" - "Cells.Find(Title(1, i + 1)).Select"

Như vậy là mình sẽ order theo name hả bạn.
 
Cám ơn bạn nhé,

Cho mình hỏi thêm về công thức có được không?

Vì mình mới add thêm 1 số record mới, thì nó báo lỗi macro bắt debug "line 91" - "Cells.Find(Title(1, i + 1)).Select"

Như vậy là mình sẽ order theo name hả bạn.

Bạn lưu ý rằng : các Title trong vùng sheet1.[C4:I4] là duy nhất (chỉ xuất hiện 1 lần trong vùng C4:I4) và phải khớp với một phần hoặc toàn bộ chuỗi trong Feb12.rows(3) . Thêm nữa, các Title trong vùng sheet1.[C4:I4] cũng chỉ xuất hiện 1 lần trong Feb12.rows(3) . Trong file ở #4 tôi đã chỉnh sửa một số lỗi trong sheet1 như sau :
DECRIPTION -> DESCRIPTION
G.W. -> G/W
N.W. -> N/W
Part No. -> Parts No.
Nếu không sửa được thì bạn gởi file lên
 
Lần chỉnh sửa cuối:
Bạn lưu ý rằng : các Title trong vùng sheet1.[C4:I4] là duy nhất (chỉ xuất hiện 1 lần trong vùng C4:I4) và phải khớp với một phần hoặc toàn bộ chuỗi trong Feb12.rows(3) . Thêm nữa, các Title trong vùng sheet1.[C4:I4] cũng chỉ xuất hiện 1 lần trong Feb12.rows(3) . Trong file ở #4 tôi đã chỉnh sửa một số lỗi trong sheet1 như sau :
DECRIPTION -> DESCRIPTION
G.W. -> G/W
N.W. -> N/W
Part No. -> Parts No.
Nếu không sửa được thì bạn gởi file lên

Mình đã sửa lại code, và set module1 vào trong file, nhưng khi chạy thì bị báo lỗi 1004, nhờ bạn check dùm xem nhé.
 

File đính kèm

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(".....sheet can tim").Select
If Target.Address = ".......o tim kiem...." Then
Selection.AutoFilter Field:=?, Criteria1:=Range("dktimkiem").Value, Operator:=xlAnd 'dat cho no mot cai name la dktimkiem . tai o do cong thuc =*& o tim kiem & *

End If

If Range("o tim kiem").Value = "" Then

Selection.AutoFilter Field:= ?' so thứ tư cua filter invoi
End If

End Sub
' zay là chỉ cần gỏ số invoi vào ô tìm kiếm sẽ liệt kê tất cả các invoi giống nhau theo hàng ngang
 
Lần chỉnh sửa cuối:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(".....sheet can tim").Select
If Target.Address = ".......o tim kiem...." Then
Selection.AutoFilter Field:=?, Criteria1:=Range("dktimkiem").Value, Operator:=xlAnd 'dat cho no mot cai name la dktimkiem . tai o do cong thuc =*& o tim kiem & *

End If

If Range("o tim kiem").Value = "" Then

Selection.AutoFilter Field:= ?' so thứ tư cua filter invoi
End If

End Sub
' zay là chỉ cần gỏ số invoi vào ô tìm kiếm sẽ liệt kê tất cả các invoi giống nhau theo hàng ngang

Chào bạn,
Bạn có thể xem lại file của mình được ko? Vì mình tìm kiếm số Invoice, thì sẽ xuất các ô giá trị liên quan đến Invoice đó.

Error 1004:
Nếu debug, bạn sẽ thấy nó vẫn có thể tìm kiếm và nhập các giá trị như Parts No, Description.., Col, nhưng bị lỗi ở cột Quantity thì nó bắt lỗi ở ActiveSheet.Paste
 
Cám ơn bác "nginh" nhiều nhé, hiện tại đã xuất ra được theo ý muốn.
 
Bác "Nginh" cho mình hỏi,

vậy nếu mình muốn xuất giá trị của 1 ô bất kì, thì phải sửa ntn?
vd: ô Invoice và P.O no (ở dưới cùng) mình muốn đem lên trên thì ntn, vì mình có copy và change name thì ô P.O no vẫn nằm ở phía dưới của Invoice. Bác có thể chỉ cho mình được không?
 

File đính kèm

Không rõ ý bạn lắm, bạn nên đưa 1 ví dụ cụ thể là :
- Dữ liệu cần lấy theo Invoice OUT hay Invoice IN
- Cách bố trí dữ liệu trong "P.O" thế nào
 
Mình có comment trong file, cái bạn làm đã đúng hết yêu cầu, nhưng giờ sếp muốn xuất giá trị P.O ở 1 ô khác, chứ không phải là nằm dưới ô Invoice, nên mình mới "tô màu ô P.O" thành màu trắng, (tại vì không hiểu ntn?)

Xuất P.O ở mục: Style P/O /NO
Xuất Invoice (IN): ở dưới mục Our Ref
Sau khi nhập giá trị Invoice (out) mới, thì Invoice cũ sẽ mất đi (hiện tại file vừa gửi thì bị như vậy), nên nhờ bác xem lại.

Cám ơn nhiều nhiều,
 
Mình có comment trong file, cái bạn làm đã đúng hết yêu cầu, nhưng giờ sếp muốn xuất giá trị P.O ở 1 ô khác, chứ không phải là nằm dưới ô Invoice, nên mình mới "tô màu ô P.O" thành màu trắng, (tại vì không hiểu ntn?)

Xuất P.O ở mục: Style P/O /NO
Xuất Invoice (IN): ở dưới mục Our Ref
Sau khi nhập giá trị Invoice (out) mới, thì Invoice cũ sẽ mất đi (hiện tại file vừa gửi thì bị như vậy), nên nhờ bác xem lại.

Cám ơn nhiều nhiều,
xem file tổng quát ở bài #30
 
Lần chỉnh sửa cuối:
Wow, wonderful.

Cám ơn đã giúp mình nhé... tuyệt
 
Them 1 đoạn code nữa cho cái file hết bị giật...
Application.ScreenUpdating = False
Dim Title()
Title = Sheets("P.O").[C18:K18].Value
Set S = Sheets("P.O").Range("Invoice_No.").Offset(, -1)
Sheets("Feb12").Select
If WorksheetFunction.CountIf(Columns(3), S.Offset(, 1)) > 0 Then
Cells.Find(S.Offset(, 1), , , , , , True).Select
Set G = Selection
h = G.Rows.Count
Sheets("P.O").Select
If S.Row - 18 > 1 Then Rows(18 + 1).Resize(S.Row - 18 - 1).Delete
Rows(18 + 1).Resize(h).Insert
S.Offset(1, 1) = G.Offset(, 1).Value
Do
Sheets("Feb12").Select
Cells.Find(Title(1, i + 1)).Select
ActiveCell.Offset(G.Row - ActiveCell.Row).Resize(h).Copy
Sheets("P.O").Select
Cells.Find(Title(1, i + 1)).Offset(1).Select
ActiveSheet.Paste
i = i + 1
Loop Until i = [C18:K18].Columns.Count

MsgBox ("Da truy xuat du lieu xong")
Else
MsgBox "So hoa don khong hop le", vbCritical
Sheets("P.O").Select
If S.Row - 18 > 1 Then Rows(18 + 1).Resize(S.Row - 18 - 1).Delete
S.Offset(1, 1) = ""
End If
S.Offset(, 1).Select
Application.ScreenUpdating = True
End Sub
 
Code nay minh dung de tim va liet ke hang co ma gan giong nhau hoac tim chinh xac liet ke bang filter trong bang nhap xuat hang hoa. Con liet ke tat ca so invoi cua ban cung tuong tu vay thoi. Ban chi toi cach up file len di. Toi sua file cho. Toi ko tim dc cho up load file len dien dan vay. Cho email toi mail cho.
 
tôi ko up file len được. cho tôi email tôi gởi cho.
 
Cám ơn bạn thienkhoi nhé, mình đã làm được rồi.
Thanks
 
Thêm yêu cầu mới

Nhờ các bạn xem giúp file,

Hiện tại, có nhờ bác "nginh" đã làm xong file cũ, nhưng do yêu cầu thêm, và cũng do mình chưa hiểu hàm VB này.

Trong ô Invoice No., sau khi nhập giá trị vào, nó sẽ xuất ra tất cả các giá trị tìm thấy được.

Mong muốn thêm (nếu được), sẽ cho phép nhập nhiều giá trị Invoice No. mà vẫn xuất ra được trong cùng sheet P.O.

Cám ơn các bạn trước nhé
 

File đính kèm

với code này bạn có thể lấy các giá trị trùng qua
Mã:
Sub iiiiiivvvvooo()
Application.ScreenUpdating = False
   Dim c As Range, firstaddress As String
ReDim kq(1 To 10, 1 To 2)
With Sheet1
Set c = .[C1:C5000].Find([b3].Value, , , xlWhole)
    If Not c Is Nothing Then
        firstaddress = c.Address
        kq(1, 1) = c.Offset(, 1).Value
        kq(1, 2) = c.Offset(, 4).Value
        k = 1
        Do
           c.Value = [b3].Value
           Set c = .[C1:C1000].FindNext(c)
            If Not c Is Nothing And c.Address <> firstaddress Then
            k = k + 1
            kq(k, 1) = c.Offset(, 1).Value
             kq(k, 2) = c.Offset(, 4).Value
            End If
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If
End With
[g5:i10].ClearContents
[g5].Resize(k, 2).Value = kq
Application.ScreenUpdating = True
End Sub
ghi chú: vui long xóa mấy cái merge cell vùng G5:I5
còn cái bảng bên dưới tôi ko biết lấy giá trị nào qua
vì với mỗi cái STYLE P/O /NO bạn có rất nhiều part no/carton no/quanlity
nên biết lấy cái nào
 
với code này bạn có thể lấy các giá trị trùng qua
Mã:
Sub iiiiiivvvvooo()
Application.ScreenUpdating = False
   Dim c As Range, firstaddress As String
ReDim kq(1 To 10, 1 To 2)
With Sheet1
Set c = .[C1:C5000].Find([b3].Value, , , xlWhole)
    If Not c Is Nothing Then
        firstaddress = c.Address
        kq(1, 1) = c.Offset(, 1).Value
        kq(1, 2) = c.Offset(, 4).Value
        k = 1
        Do
           c.Value = [b3].Value
           Set c = .[C1:C1000].FindNext(c)
            If Not c Is Nothing And c.Address <> firstaddress Then
            k = k + 1
            kq(k, 1) = c.Offset(, 1).Value
             kq(k, 2) = c.Offset(, 4).Value
            End If
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If
End With
[g5:i10].ClearContents
[g5].Resize(k, 2).Value = kq
Application.ScreenUpdating = True
End Sub
ghi chú: vui long xóa mấy cái merge cell vùng G5:I5
còn cái bảng bên dưới tôi ko biết lấy giá trị nào qua
vì với mỗi cái STYLE P/O /NO bạn có rất nhiều part no/carton no/quanlity
nên biết lấy cái nào

Cám ơn bạn nhé, nhưng mình nhúng code của bạn vào thì vẫn không đúng. Vì nó có thể tìm tất cả các giá trị P.O nhưng lại không theo đúng thứ tự như vậy.

Nếu mình lập lại bước tìm với P.O khác, thì lại bắt debug... cái này mình nghĩ là do nó vẫn nhớ cái P.O lúc đầu đã tìm.. nhờ bạn xem lại giúp xíu nữa được ko.
 
Nhờ các bạn xem giúp file,

Hiện tại, có nhờ bác "nginh" đã làm xong file cũ, nhưng do yêu cầu thêm, và cũng do mình chưa hiểu hàm VB này.

Trong ô Invoice No., sau khi nhập giá trị vào, nó sẽ xuất ra tất cả các giá trị tìm thấy được.

Mong muốn thêm (nếu được), sẽ cho phép nhập nhiều giá trị Invoice No. mà vẫn xuất ra được trong cùng sheet P.O.

Cám ơn các bạn trước nhé

Đã hiệu chỉnh dưới đây
 
Lần chỉnh sửa cuối:
Cám ơn bạn "nginh" nhiều nhé, mình đang xem file
 
File mới update của bạn, mình mới bổ sung thêm thông tin từ tháng APRIL trở xuống.

Bạn thử 1405-0502 sẽ bị lỗi debug
Bạn thử 1405-0503 sẽ bị thiếu cột MEAT M3
 

File đính kèm

Cám ơn rất nhiều, mình test thấy chạy tốt, để thứ 2 mình test lại lần nữa... cám ơn nhé
 

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

Back
Top Bottom