Xin giúp mình lập hàm cho file này

  • Thread starter Thread starter sambo
  • Ngày gửi Ngày gửi
Liên hệ QC

sambo

Thành viên mới
Tham gia
22/10/08
Bài viết
9
Được thích
1
Lần trước minh Post tiêu đề chung chung bên bị chuyển box, giờ mới post lại,xin các bạn xem giúp mình file này,mình muốn hoàn thiện sheet3, mỗi ngày đều phải làm thủ công vất vả quá,mình cảm ơn trước!
 

File đính kèm

Vấn đề của bạn theo tôi nghĩ là phải dùng đến macro để làm bởi vì mỗi khách hàng có số lượng mã chứng khoán không giống nhau. Nếu dùng phương pháp lập hàm dò tìm trong excel thì tìm cái tên của khách hàng là quá dễ còn mấy cái khác gần như vô vọng rồi!
 
Mình sẽ giúp bạn 1 macro hoàn chỉnh theo khả năng, nhưng với những điều kiện sau:

(*) CSDL của bạn có quá nhiều hàng & cột trống; Chuyện này dùng các hàm trong excel mình không dám nói, nhưng với VBA thì tối kỵ
Bạn để các dòng & cột trống để dễ phân biệt với bạn thôi, với VBA thì khó vô chừng
Bạn thử tưởng tượng thế này:
Để copy vùng tìm thấy của mã khách hàng nào đó ( dữ liệu có trong 7 cột - vì cột bạn để cột 'B' & cột 'D' trống) sang form (sheet3) chỉ 6 cột thôi thì phải thêm những động tác bổ trợ không cần thiết rất nhiều.
Nếu bạn không đồng í xóa những dòng/cột này thì e rằng chúng ta không có tiếng nói chung!

(*) Yêu cầu của bạn: " Đừng edit form bạn nhé,vì mỗi . . . ", Yêu cầu này có thể dung hòa giữa tôi với bạn bằng cách như sau:

Ta ấn định dòng tổng cộng trong forrm, gồm cả công thức cọng tai cột 'E' & 'G' tại dòng 30;
Các dòng thừa (do không chứa dữ liệu) sau mỗi lân chép dữ liệu khách hàng tới sẽ cho VBA làm ẩn đi

Lí do mình đưa ra phương cách này vì các khách hàng của bạn dữ liệu nhiều ít khác nhau
Muốn tự động để in ấn hay làm gì khác mà form không đổi dạng thì cách mình đề xuất là đơn giản & khả năng mình có thể thực hiện được, vì mình cũng đã thực hiện cho 1 thành viên cộng đồng này rồi.

Chờ phản hồi từ bạn.
 
Lần trước minh Post tiêu đề chung chung bên bị chuyển box, giờ mới post lại,xin các bạn xem giúp mình file này,mình muốn hoàn thiện sheet3, mỗi ngày đều phải làm thủ công vất vả quá,mình cảm ơn trước!
Nếu tôi nhớ ko lầm thì tôi đã có làm file này trả lời cho bạn ở một topic khác rồil.
 
Cảm ơn 2 bạn nhiều, mình hầu như chưa biết gì về marco cả, nhưng dù sao cũng muốn xem để tham khảo và học hỏi xem sao. Mình muon không edit form là vì form sheét và sheet2 là chiết xuất từ phần mềm ra và mỗi ngày chỉ thay đổi CSDL vào đấy thôi.Còn dòng tổng cộng thì nó có thể đc đẩy xuống nếu số lượng CK của KH nhiều lên.Bạn ChanhTQ@ ,up file lên cho mình tham khảo với nhé!

Nếu tôi nhớ ko lầm thì tôi đã có làm file này trả lời cho bạn ở một topic khác rồil.
Cảm ơn bạn, vì topic đó bị phạm quy chuyển box nên acount của mình ko được down bài giải của bạn,bạn up lại hộ mình lần nữa nhé bạn
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tôi thì không rành lắm về VBA và thời gian này có quá nhiều công việc nên chỉ có thể giúp bạn một chút như thế này thôi!Tuy nhiên phải góp ý với bạn rằng bảng tính của bạn trình bày không hay lắm và font chữ thì quá lộn xộn.Đoạn macro này tôi viết khá cẩu thả vì không có nhiều thời gian.Nếu được bạn nên sửa lại viết cho một Commandbutton sẽ hay hơn hay nhờ một cao thủ nào khác làm giúp bạn vậy!Chúc bạn thành công!
 

File đính kèm

Bạn xem thử trong file đính kèm nha

. . .Còn dòng tổng cộng thì nó có thể đc đẩy xuống nếu số lượng CK của KH nhiều lên.Bạn ChanhTQ@ ,up file lên cho mình tham khảo với nhé!
PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [A10]) Is Nothing Then
   Dim Sh As Worksheet
   Dim sRng As Range, Rng As Range, tRng As Range
   Dim SoDg As Long
   
   Set Sh = Sheets("Sheet2"):          Cells.Select
   Selection.EntireRow.Hidden = False
   Set Rng = Sh.Range(Sh.[A1], Sh.[A65500].End(xlUp))
   Range("B10:H29").Clear
   Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      MsgBox "KHONG CO MA KHACH HANG NAY!", , "GPE XIN NHAC: BAN XEM LAI"
      Exit Sub
   Else
   
      SoDg = sRng.End(xlDown).Row - sRng.Row
      [B10].Resize(SoDg, 6).Value = sRng.Offset(, 2).Resize(SoDg, 7).Value
      
      SoDg = [e30].End(xlUp).Row + 1
      Rows(SoDg & ":28").Select
      Selection.EntireRow.Hidden = True
      
   End If
 End If
End Sub
 
Lần chỉnh sửa cuối:
Bạn ChanhTQ ơi,code của bạn lấy giá tham chiếu và giá trị sai rồi,bạn xem lại ntn nhé,giá tham chiếu đc lấy từ sheet1
 
Sửa chữa & bổ xung rồi đây

Bạn ChanhTQ ơi,code của bạn lấy giá tham chiếu và giá trị sai rồi,bạn xem lại ntn nhé,giá tham chiếu đc lấy từ sheet1

PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [A10]) Is Nothing Then
   Dim Sh As Worksheet
   Dim sRng As Range, Rng As Range, tRng As Range
   Dim SoDg As Long, jJ As Long
   
   Set Sh = Sheets("Sheet2"):          Cells.Select
   Selection.EntireRow.Hidden = False
   Set Rng = Sh.Range(Sh.[A1], Sh.[A65500].End(xlUp))
   Range("B10:H29").Clear
   Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      MsgBox "KHONG CO MA KHACH HANG NAY!", , "GPE XIN NHAC: BAN XEM LAI"
      Exit Sub
   Else
   
      SoDg = sRng.End(xlDown).Row - sRng.Row
      [B10].Resize(SoDg, 3).Value = sRng.Offset(, 2).Resize(SoDg, 3).Value
      [e11].Resize(SoDg - 1).Value = sRng.Offset(1, 8).Resize(SoDg - 1).Value
      
      SoDg = [D30].End(xlUp).Row + 1
      Set Sh = Sheets("Sheet1")
      Set Rng = Sh.Range(Sh.[A1], Sh.[A65500].End(xlUp))
      For jJ = 10 To SoDg
         With Cells(jJ, "D")
            If .Value <> "" Then
               Set sRng = Rng.Find(.Value, , xlFormulas, xlWhole)
               If Not sRng Is Nothing Then _
                  .Offset(, 2).Value = sRng.Offset(, 1).Value
               .Offset(, 3).Select
               ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
            End If
         End With
      Next jJ
      If SoDg < 15 Then SoDg = 15
      Rows(SoDg & ":28").Select
      Selection.EntireRow.Hidden = True
      
   End If
 End If
End Sub
 

File đính kèm

Lần trước minh Post tiêu đề chung chung bên bị chuyển box, giờ mới post lại,xin các bạn xem giúp mình file này,mình muốn hoàn thiện sheet3, mỗi ngày đều phải làm thủ công vất vả quá,mình cảm ơn trước!
tôi làm giúp bạn, sử dụng công thức 100%.Bạn thử nhé
 

File đính kèm

Bạn Cao Manh Sơn ơi, sao mà mình ko refresh được trong sheet5 bạn nhỉ, cái dấu chấm than đó bị mờ
 
Bạn Cao Manh Sơn ơi, sao mà mình ko refresh được trong sheet5 bạn nhỉ, cái dấu chấm than đó bị mờ
à có thể do mình tạo pivot table từ excel 2007 với nguồn là vùng dữ liệu tên là TK.Trong excel 2003 có thể bạn phải tạo lại pivot table,chắc bạn làm được,và pivot table mới do bạn tạo phải có dữ liệu đưa vào Data và có 2 cột trở lên nhưng tên tài khoản bạn đặt vào cột A là được.
bạn thử lại nhé
 
Web KT

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

Back
Top Bottom