Nếu không có gì cần thiết lắm, bạn có thể dùng VLOOKUP cho toàn bộ yêu cầu ---> Tôi thấy cũng chả có gì cả!Anh chị hoàn thiện thêm dùm em code cho phiếu nhập này.
(Câu hỏi cụ thể trong file đính kèm)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FRng As Range
If Target.Address = "$G$1" Then
'..........
With Sheets("DATA_VT")
.ShowAllData
Set FRng = .Range("PNK01").Find(Target, , xlValues, xlWhole)
'..........
'..........
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FRng As Range
If Target.Address = "$G$1" Then
On Error Resume Next
Range("A14:H60000").ClearContents
Set FRng = Range("PNK01").Find(Target, , xlValues, xlWhole)
With Sheets("DATA_VT")
.ShowAllData
Set FRng = .Range("PNK01").Find(Target, , xlValues, xlWhole)
With .Range(.[A5], .[a65536].End(xlUp)).Resize(, 20)
.AutoFilter 1, Target.Value
If .Resize(, 1).SpecialCells(12).Count > 1 Then
Intersect(.Columns(6), .Offset(1)).Copy: Cells(8, C).PasteSpecial 3
Intersect(.Columns(13), .Offset(1)).Copy: Range("B14").PasteSpecial 3
Intersect(.Columns(14), .Offset(1)).Copy: Range("D14").PasteSpecial 3
Intersect(.Columns(15), .Offset(1)).Copy: Range("G14").PasteSpecial 3
Intersect(.Columns(IIf(Left(Target, 2) = "PN", 16, 18)), .Offset(1)).Copy
Range("F14").PasteSpecial 3
End If
.AutoFilter
End With
End With
If Range("B14").Value <> "" Then
With Range([B14], [B65536].End(xlUp))
.Offset(, -1).Value = Evaluate("ROW(R:R)")
With .Offset(, 6)
.Value = "=RC[-1]*RC[-2]"
.Value = .Value
End With
End With
End If
Range("C8") = FRng.Offset(, 4).Value
Range("B9") = FRng.Offset(, 5).Value
'---> Tiếp cho những cell khác
Target.Select
End If
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim MyAdd As String
Set Sh = Sheets("DATA_VT")
Set Rng = Sh.Range(Sh.[A5], Sh.[A65500].End(xlUp))
Set sRng = Rng.Find([G1].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
[c8].Value = Sh.Cells(sRng.Row, "E").Value
[B9].Value = Sh.Cells(sRng.Row, "K").Value
[B10].Value = Sh.Cells(sRng.Row, "F").Value
[E9].Value = Sh.Cells(sRng.Row, "T").Value
[H6].Value = Sh.Cells(sRng.Row, "C").Value
[H7].Value = Sh.Cells(sRng.Row, "D").Value
[G9].Value = Sh.Cells(sRng.Row, "B").Value
[c11].Value = Sh.Cells(sRng.Row, "I").Value
[G11].Value = Sh.Cells(sRng.Row, "J").Value
2 ' Chép Chi Tiet Mat Hàng:'
MyAdd = sRng.Address
Do
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
End If
End Sub
Còn đây là những gì theo yếu cầu của bạn:
PHP:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [G1]) Is Nothing Then Dim Sh As Worksheet, Rng As Range, sRng As Range Dim MyAdd As String Set Sh = Sheets("DATA_VT") Set Rng = Sh.Range(Sh.[A5], Sh.[A65500].End(xlUp)) Set sRng = Rng.Find([G1].Value, , xlFormulas, xlWhole) If Not sRng Is Nothing Then [c8].Value = Sh.Cells(sRng.Row, "E").Value [B9].Value = Sh.Cells(sRng.Row, "K").Value [B10].Value = Sh.Cells(sRng.Row, "F").Value [E9].Value = Sh.Cells(sRng.Row, "T").Value [H6].Value = Sh.Cells(sRng.Row, "C").Value [H7].Value = Sh.Cells(sRng.Row, "D").Value [G9].Value = Sh.Cells(sRng.Row, "B").Value [c11].Value = Sh.Cells(sRng.Row, "I").Value [G11].Value = Sh.Cells(sRng.Row, "J").Value 2 ' Chép Chi Tiet Mat Hàng:' MyAdd = sRng.Address Do Loop While Not sRng Is Nothing And sRng.Address <> MyAdd End If End If End Sub
Bạn ơi! Còn sheet THEKHO nữa, sao bạn không nhờ luôn 1 lượt?Các thầy viết dùm em code cho Sổ chi tiết này nữa nhé!
Cám ơn các thầy nhiều!
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim MyAdd As String
Set Sh = Sheets("DATA_VT")
Set Rng = Sh.Range(Sh.[A5], Sh.[A65500].End(xlUp))
Set sRng = Rng.Find([G1].Value, , xlFormulas, xlWhole)
Range("B14:B" & [E65500].End(xlUp).Row).Resize(, 7).ClearContents
If Not sRng Is Nothing Then
[c8].Value = Sh.Cells(sRng.Row, "E").Value
[B9].Value = Sh.Cells(sRng.Row, "K").Value
[B10].Value = Sh.Cells(sRng.Row, "F").Value
[E9].Value = Sh.Cells(sRng.Row, "T").Value
[H6].Value = Sh.Cells(sRng.Row, "C").Value
[H7].Value = Sh.Cells(sRng.Row, "D").Value
[G9].Value = Sh.Cells(sRng.Row, "B").Value
[c11].Value = Sh.Cells(sRng.Row, "I").Value
[G11].Value = Sh.Cells(sRng.Row, "J").Value
2 ' Chép Chi Tiet Mat Hàng:'
MyAdd = sRng.Address
Do
With Range("B" & [E65500].End(xlUp).Row).Offset(1)
.Value = Sh.Cells(sRng.Row, "M").Value
.Offset(, 1).Value = Sh.Cells(sRng.Row, "L").Value
.Offset(, 2).Value = Sh.Cells(sRng.Row, "N").Value
' .Offset(, 3).Value ="GPE.COM" '
.Offset(, 4).Value = Sh.Cells(sRng.Row, "P").Value
.Offset(, 5).Value = Sh.Cells(sRng.Row, "O").Value
.Offset(, 6).Value = Sh.Cells(sRng.Row, "Q").Value
End With
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [F1]) Is Nothing Then SoChungTu
End Sub
Sub SoChungTu()
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim Jj As Long, SoNg As Long, Rws As Long
Dim Dat As Date, MyAdd As String
Set Sh = Worksheets("DATA_VT"): Sheets("SCT").Select
Dat = [E4].Value: SoNg = [h4].Value - Dat
1
Set Rng = Sh.Range(Sh.[L1], Sh.[L65500].End(xlUp))
Set sRng = Rng.Find([F1].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
[C6].Value = sRng.Offset(, 1).Value
[H6].Value = sRng.Offset(, 2).Value 'm3?'
Jj = sRng.Row: [C7].Value = "GPE" '? O Dau'
[H7].Value = Sh.Cells(Jj, "I").Value
[j6].Value = Sh.Cells(Jj, "C").Value 'TKh No'
End If
2
Set Rng = Sh.Range(Sh.[B5], Sh.[B65500].End(xlUp))
Rng.NumberFormat = "dd/mm/yyyy"
Rows("11:999").ClearContents
For Jj = 0 To SoNg
Set sRng = Rng.Find(Dat + Jj)
If Not sRng Is Nothing Then
MyAdd = sRng.Address: Rws = sRng.Row
Do
If Sh.Cells(Rws, "L").Value = [F1].Value Then
With [A65500].End(xlUp).Offset(1)
.Value = Sh.Cells(Rws, "A").Value
.Offset(, 1).Value = Dat + Jj
.Offset(, 2).Value = [F1].Value
.Offset(, 3).Value = Sh.Cells(Rws, "k").Value 'DienGiai
.Offset(, 4).Value = "NTr"
.Offset(, 5).Value = Sh.Cells(Rws, "d").Value 'TKhDU
.Offset(, 6).Value = Sh.Cells(Rws, "o").Value 'DonGia
.Offset(, 7).Value = Sh.Cells(Rws, "p").Value 'SoNhap
.Offset(, 8).Value = Sh.Cells(Rws, "q").Value 'TriNhap
.Offset(, 9).Value = Sh.Cells(Rws, "r").Value 'SoXuat
.Offset(, 10).Value = Sh.Cells(Rws, "s").Value 'TriXuat
.Offset(, 11).Value = .Offset(, 7).Value - .Offset(, 9).Value
.Offset(, 12).Value = .Offset(, 8).Value - .Offset(, 10).Value
End With
End If
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next Jj
End Sub
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [F1]) Is Nothing Then SoChungTu End Sub
PHP:Sub SoChungTu() Dim Sh As Worksheet, Rng As Range, sRng As Range Dim Jj As Long, SoNg As Long, Rws As Long Dim Dat As Date, MyAdd As String Set Sh = Worksheets("DATA_VT"): Sheets("SCT").Select Dat = [E4].Value: SoNg = [h4].Value - Dat 1 Set Rng = Sh.Range(Sh.[L1], Sh.[L65500].End(xlUp)) Set sRng = Rng.Find([F1].Value, , xlFormulas, xlWhole) If Not sRng Is Nothing Then [C6].Value = sRng.Offset(, 1).Value [H6].Value = sRng.Offset(, 2).Value 'm3?' Jj = sRng.Row: [C7].Value = "GPE" '? O Dau' [H7].Value = Sh.Cells(Jj, "I").Value [j6].Value = Sh.Cells(Jj, "C").Value 'TKh No' End If 2 Set Rng = Sh.Range(Sh.[B5], Sh.[B65500].End(xlUp)) Rng.NumberFormat = "dd/mm/yyyy" Rows("11:999").ClearContents For Jj = 0 To SoNg Set sRng = Rng.Find(Dat + Jj) If Not sRng Is Nothing Then MyAdd = sRng.Address: Rws = sRng.Row Do If Sh.Cells(Rws, "L").Value = [F1].Value Then With [A65500].End(xlUp).Offset(1) .Value = Sh.Cells(Rws, "A").Value .Offset(, 1).Value = Dat + Jj .Offset(, 2).Value = [F1].Value .Offset(, 3).Value = Sh.Cells(Rws, "k").Value 'DienGiai .Offset(, 4).Value = "NTr" .Offset(, 5).Value = Sh.Cells(Rws, "d").Value 'TKhDU .Offset(, 6).Value = Sh.Cells(Rws, "o").Value 'DonGia .Offset(, 7).Value = Sh.Cells(Rws, "p").Value 'SoNhap .Offset(, 8).Value = Sh.Cells(Rws, "q").Value 'TriNhap .Offset(, 9).Value = Sh.Cells(Rws, "r").Value 'SoXuat .Offset(, 10).Value = Sh.Cells(Rws, "s").Value 'TriXuat .Offset(, 11).Value = .Offset(, 7).Value - .Offset(, 9).Value .Offset(, 12).Value = .Offset(, 8).Value - .Offset(, 10).Value End With End If Set sRng = Rng.FindNext(sRng) Loop While Not sRng Is Nothing And sRng.Address <> MyAdd End If Next Jj End Sub
@ Yome :
1/ Thà rằng ngay lúc đầu bạn "nhờ các thầy" trên GPE thiết kế giùm em một sổ kế toán trên Ex, chắc sẽ có người "làm giúp"
2/ Nếu không chịu học, chỉ biết đi nhờ vả, chắc đến mùa quýt năm nào đó bạn mới hiểu biết được Ex. Đến khi đó lỡ file có bị lỗi, chắc bạn cũng không biết lỗi ở đâu và ....vẫn nhờ tiếp
3/ Nói riêng : Hãy tự minh làm theo các hướng dẫn, sau đó nếu không hiểu hoặc chưa hiểu chỗ nào thì post bài lên hỏi, như vậy bạn sẽ hiểu sâu hơn và mới biết vận dụng vào bài khác của minh
Một đôi lời giãi bày, mong hiểu. Nếu có điều gì quá lời mong bỏ qua.
Thân