Nhờ giúp đỡ về cách di chuyển dữ liệu theo điều kiện với VBA? (1 người xem)

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

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

KUMI

Bụi phấn
Tham gia
17/1/12
Bài viết
564
Được thích
571
Em chào Thầy CÔ và Anh Chị trong GPE ạ!
Em đang mong muốn làm sao có thể thực được những thỉnh cầu đã đưa trong file kèm.
Thầy Cô và và anh Chị xem có thể giả quyết được không, Giúp em với ạ!
Em xin cảm ơn!!!
 

File đính kèm

Hì!Nếu yêu cầu của em đưa ra phức tạp và khó thực hiện thì có thể lược bỏ 1 ý(1dấu+) ở trong file đi file tỏng mục câu hỏi ạ!
 
Upvote 0
Bạn tạm xài thử macro này cho nút lệnh thương iêu của bạn!

[ThongBao]Hì!Nếu yêu cầu của em đưa ra phức tạp và khó thực hiện thì có thể . . . ở trong file đi file tỏng mục câu hỏi ạ![/ThongBao]

PHP:
Option Explicit
Sub GPE()
 Dim Th As Variant, Rws As Long
 Dim Rng As Range, sRng As Range
 
 Set Rng = Range([F11], [iu11].End(xlToLeft).Offset(, 9))
 Th = [b11].Value
 
 Set sRng = Rng.Find([b11].Value, , xlFormulas, xlWhole)
 Rws = [b12].End(xlDown).Row
 If sRng Is Nothing Then
    [b11].Resize(Rws, 4).Copy Destination:=[iu11].End(xlToLeft).Offset(, 1)
 Else
    Th = MsgBox("Tháng Này Da Có", 3, "Ban Muón Cap Nhat?")
    If Th = 6 Then
        [b11].Resize(Rws, 4).Copy Destination:=sRng
    ElseIf Th = 7 Then
        MsgBox "Tam Biet Ban!", , "Hen Tái Ngo!"
    ElseIf Th = 2 Then
        MsgBox "Do Ngu!", , "Tam Biet Ban!"
    End If
 End If
End Sub

/(/hững mong là khỏi gởi file lên cho bạn!
 
Upvote 0
hahaha! Hay vậy Thầy!
Có 1 cái mong Thầy sửa giúp dùm Em với ạ? EM chỉ di chuyển dữ liệu trong trong 1 vùng nhất định thôi ạ ví dụ khung màu đỏ (B11:E2) thôi ạ? chứ không không di chuyển hết cả cột. Vì ở bên dưới có thể còn các ghi chú hay dữ liệu khác mà không nhất thiết phải chuyển sang Thầy ạ!

Rất cảm ơn Thầy và GPE đã quan tâm giúp đỡ ạ!!!hihihi...(^_-)!
 
Upvote 0
Vậy thì sửa câu lệnh Rws = [b12].End(xlDown).Row

[ThongBao]hahaha! Hay vậy Thầy!
Có cái mong được sửa giúp Em với ạ:
EM chỉ di chuyển dữ liệu trong trong 1 vùng nhất định thôi ạ ví dụ khung màu đỏ (B11:E22) thôi ạ? chứ không không di chuyển hết cả cột. Vì ở bên dưới có thể còn các ghi chú hay dữ liệu khác mà không nhất thiết phải chuyển sang Thầy ạ!

Rất cảm ơn Thầy và GPE đã quan tâm giúp đỡ ạ!!!hihihi...(^_-)![/thOngBao]


Thành câu

Mã:
[FONT=Courier New][COLOR=#007700] [/COLOR][COLOR=#0000bb]Rws [/COLOR][COLOR=#007700]= [[/COLOR][COLOR=#0000bb]b12[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#0000bb]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]xlDown[/COLOR][COLOR=#007700]).[/COLOR][/FONT][COLOR=#0000bb][FONT=Courier New]Row - [/FONT][/COLOR][COLOR=#ff0000][FONT=Courier New][B]10[/B][/FONT][/COLOR][COLOR=#0000bb]
[/COLOR]
 
Upvote 0
Ồ! Thầy HYen17 và Thầy ChanhTQ@ cách trả lời và danh hiệu rất giống nhau mới đầu em cứ tưởng là 1..^^!
Phải chăng 2 Thầy có mối quan hệ rất đặc biệt! :))
Em cám ơn 2 Thầy đã giúp đỡ em để em hoàn thành 1 vấn đề rất cần và hữu ích cho công việc...hihi!
--------
ý!Em xin hỏi thêm 1 vấn đề nhỏ để chức năng được hoản hảo hơn ạ... nghiã là mình có thể Thêm 1 đoạn code nào đó để pase độ rộng của cột sau khi di chuyển đúng bằng độ rộng của bảng cũ không ạ? (hì cái này em có thể làm bằng tay trong vài giây được nhưng em muốn nó hoàn hảo và đẹp mắt hơn nữa ạ)... :D
 
Upvote 0
Em chào Thầy CÔ và Anh Chị trong GPE ạ!
Em đang mong muốn làm sao có thể thực được những thỉnh cầu đã đưa trong file kèm.
Thầy Cô và và anh Chị xem có thể giả quyết được không, Giúp em với ạ!
Em xin cảm ơn!!!

Tôi đoán chừng bạn muốn cập nhật chức vụ của từng người qua từng thời điểm?
Với dữ liệu như trong file của bạn cũng không phải là không làm được... nhưng tôi thấy rằng cách bố trí của bạn không phải là cách bố trí tốt (chuẩn CSDL)
Tôi nghĩ bạn nên thay đổi cách bố trí dữ liệu kiểu khác sẽ hay hơn (sẽ giải quyết vấn đề nhanh hơn)
Nên nhớ: Dữ liệu bố trí tốt sẽ quyết định sự thành công cho những công việc xử lý sau đó
 
Upvote 0
Vâng! Đúng vậy Thầy ạ không chỉ cập nhật mấy thông tin đấy đâu Thầy ạ.. cụ thể còn nhiều cột khác ví dụ lương của mọi người qua các thời điểm,nhà ở, số CMTND,,, ôi nhiều lắm vì đây là file danh sách nhân sự công Ty Thầy ạ, nhưng Em chỉ đưa lên mấy cột để làm ví dụ thôi Thầy ạ!
Còn về thay đổi kiểu bố trí em e là khó để thuyết phục sếp lắm đành phải cam chịu làm theo thôi Thầy!
Sếp Em sợ Thay đổi thì dự liệu link đến các file khác sẽ không còn tác dụng nữa.. nói chung là cũng phức tạp!
Ca'm ơn sự góp ý của Thầy ạ!
--------------
Hì Thầy xem giúp em câu hỏi cuối cùng với ạ! :D!
Cảm ơn Thầy!
 
Upvote 0
Chức năng nhỏ ư?, không dám đâu! & mình chỉ đang làm được vầy

ý! Em xin hỏi thêm 1 vấn đề nhỏ để chức năng được hoản hảo hơn ạ... nghiã là mình có thể Thêm 1 đoạn code nào đó để pase độ rộng của cột sau khi di chuyển đúng bằng độ rộng của bảng cũ không ạ? (hì cái này em có thể làm bằng tay trong vài giây được nhưng em muốn nó hoàn hảo và đẹp mắt hơn nữa ạ)... :D

Hì xem giúp em câu hỏi cuối cùng với ạ! :D!
!

PHP:
Option Explicit
Sub GPE()
0 Dim Th As Variant, Rws As Long, MaxCol As Double, Mn As Byte
 Dim Rng As Range, sRng As Range
1 Dim SCol As String
 
 Set Rng = Range([F11], [iU11].End(xlToLeft).Offset(, 9))
 
2 For Th = 2 To 5
3    SCol = Switch(Th = 2, "B:B", Th = 3, "c:C", Th = 4, "D:d", Th = 5, "E:e")
4    If Columns(SCol).Width > MaxCol Then MaxCol = Columns(SCol).Width
5 Next Th
 Th = [b11].Value
 Set sRng = Rng.Find(Th, , xlFormulas, xlWhole)
 Rws = [b12].End(xlDown).Row
 If sRng Is Nothing Then
6    Mn = CByte(Right(Th, 2))
7    SCol = Switch(Mn = 1, "F:I", Mn = 2, "j:m", Mn = 3, "n:Q", Mn = 4, "r:U", _
        Mn = 5, "v:Y", Mn = 6, "z:Ac", Mn = 7, "aD:Ag", Mn = 8, "aH:aK", _
        Mn = 9, "aI:aO", Mn = 10, "aP:aS", Mn = 11, "aT:aw", Mn = 12, "aX:bA")
8    Columns(SCol).ColumnWidth = MaxCol
     [b11].Resize(Rws, 4).Copy Destination:=[iU11].End(xlToLeft).Offset(, 1)
9     Columns(SCol).Select
10    Selection.EntireColumn.AutoFit
 Else
    Th = MsgBox("Tháng Này Da Có", 3, "Ban Muón Cap Nhat?")
    If Th = 6 Then
12        sRng.Resize(, 4).EntireColumn.ColumnWidth = MaxCol
        [b11].Resize(Rws, 4).Copy Destination:=sRng
        
13        sRng.Resize(, 4).EntireColumn.AutoFit
    
    ElseIf Th = 7 Then
        MsgBox "Tam Biet Ban!", , "Hen Tái Ngo!"
    ElseIf Th = 2 Then
        MsgBox "2uá Ngu!", , "Tam Biet Ban!"
    End If
 End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
khà khà !! Con cứ tưởng làm bằng tay nó đơn giản nên code cũng đơn giản.. ngờ đâu nó khiến các Thầy lại đau đầu đến vậy hihi!...Các Thầy nhiều tuổi mà vẫn viết được code và nhưng bài viết vui vẻ thế này KUMI thật khâm phục và Quí mến!
Chúc các Thầy luôn mạnh khỏe ạ!
Về code thì con vận dụng thấy ổn ổn rồi ạ! Nếu còn vướng mắc chỗ nào thì xin hỏi các Thầy sau ạ!
hihi
 
Upvote 0

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

Back
Top Bottom