| |||||||||||
Tôi thì không biết về VBa, nhưng có khả năng bạn lấy tên theo bước nhẩy của nóLàm sao máy nó hiểu đâu là tên người & đâu là đầu công việc vậy bạn?
Có lẽ nên cho mỗi người bạn thuê 1 mã, như
NVA00 Nguyễn Văn An NVB00 Ngô Văn Bé NVC00 Như Văn Việt Cảnh NVD00 Nhâm Văn Dy NJE00 Nguyễn Em
À mã số thì có khả năng bạn @SA_DQ lấy theo tên dược không?Làm sao máy nó hiểu đâu là tên người & đâu là đầu công việc vậy bạn?
Có lẽ nên cho mỗi người bạn thuê 1 mã, như
NVA00 Nguyễn Văn An NVB00 Ngô Văn Bé NVC00 Như Văn Việt Cảnh NVD00 Nhâm Văn Dy NJE00 Nguyễn Em
Vâng, bạn tùy biến cho mình vấn đề này với nhéVấn đề là khi có mã như mình đã đề xuất, thì dữ liệu của bạn sẽ như thế nào:
1 cột xen kẻ giữa mã & các đầu việc
2 Cột mã ghi riêng & Họ & tên người củng đầu việc ghi riêng
3 . . . . .
Cảm ơn bạn @SA_DQ tôi hiểu rồi, miễn là phải có chữ số ở đóNếu muốn thay bằng tên thì thử thêm vài ký số sau tên
Hồng Nhung 95 Hải Yến 00 Văn Toàn 02 Nghĩa Thục 95
Nếu không có giải pháp nào thì bạn có thể giúp mình thay đổi hàng loạt danh sách nhân viên gắn thêm số vào cho họ được không?Nếu muốn thay bằng tên thì thử thêm vài ký số sau tên
Hồng Nhung 95 Hải Yến 00 Văn Toàn 02 Nghĩa Thục 95
Nếu thế thì làm vầy:Nếu không có giải pháp nào thì bạn có thể giúp mình thay đổi hàng loạt danh sách nhân viên gắn thêm số vào cho họ được không?
Danh sách nhân viên là có sẵn.
Mình thử code của bạn rồi, rất ok bạn @SA_DQ , chỉ cần thêm 1 số vào đuôi của các nhân viên là đươcNếu thế thì làm vầy:
"HoTen" & "yy"; Ở đây 'yy" là số năm sinh của người đó
& nếu bạn không viết được macro thì đưa DS ý lên, mọi người sẽ viết macro cho bạn, dễ mà!
Nếu không có 'Năm sinh' thì gán chuỗi số thứ tự cũng xong ngay!
Ta có thể làm ngược lại là đánh số TT cho các đầu việc, như vầy:Bạn nghĩ giúp mình xem còn phương pháp nào không nhỉ
01.Buổi chiều tập đá bóng |
02.Buổi tối học bài lại |
03.Cắt cỏ |
04.Đi học |
05.Đưa trâu về |
06.Giặt quần áo |
07.Là quần áo |
08.Lau nhà |
09.Nấu cơm |
10.Nấu nước |
11.Nhặt rau |
12.Pha trà |
13.Phơi quần áo |
14.Rửa bát |
15.Rửa chén |
16.Tắm rửa cho trâu |
17.Thả trâu |
18.Thu dọn quần áo |
19.Trăn trâu |
20.Vo gạo |
Cảm ơn bạn SA_DQ |
Mình nghĩ ra thuật toán như sau, bạn xem có được không nhé! |
Ta dùng hàm đếm số nhân viên (Ví dụ như mình làm ở cột B) |
Sau đó đếm số "0" sau các nhân viên tìm được |
Và lấy các số không ở đằng sau số 1, khi gặp số 1 khác thì dừng |
Liệu vấn đề này có giải quyết được bàng VBA được không bạn? |
Nguyễn văn An | Ho & Ten | #05 | ||
Thả trâu | Nhữ Vũ Việt Công | 7 | ||
Cắt cỏ | Nguyễn Vân Dung | 3 | ||
Trăn trâu | ||||
Đưa trâu về | ||||
Tắm rửa cho trâu | ||||
Ngô Vũ Văn Bé | ||||
Nhặt rau | ||||
Nấu nước | ||||
Pha trà | ||||
Rửa bát | ||||
Lau nhà | ||||
Nấu cơm | ||||
Vo gạo | ||||
Nhữ Vũ Việt Công | ||||
Rửa chén | ||||
Giặt quần áo | ||||
Là quần áo | ||||
Phơi quần áo | ||||
Thu dọn quần áo | ||||
Nguyễn Vân Dung | ||||
Đi học | ||||
Buổi chiều tập đá bóng | ||||
Buổi tối học bài lại |
Sub LietKeKhac05()
Dim Rng As Range, sRng As Range, Cls As Range
Dim W As Integer, Dm As Integer: Dim Ma As String
ReDim Arr(1 To 9, 1 To 2)
1 [H2].CurrentRegion.Offset(1).Clear
Set Rng = Range([d1], [d1].End(xlDown))
3 For Each Cls In Range([f1], [f1].End(xlDown))
Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
5 If sRng Is Nothing Then
Dm = Dm + 1
7 Else
If (Dm = 0 And W = 0) Then W = W + 1
9 If Cls.Row <> 1 And Dm <> 5 Then
Arr(W, 1) = Ma: Arr(W, 2) = Dm
11 W = W + 1:
End If
13 Ma = Cls.Value: Dm = 0
End If
15 Next Cls
If Dm > 0 And Dm <> 5 Then
17 Arr(W, 1) = Ma: Arr(W, 2) = Dm
End If
19 If W Then [H2].Resize(W, 2).Value = Arr()
End Sub
Cảm ơn bạn @SA_DQ rất nhiều, đấy là mình nghĩ như vậy, còn các thuật toán đó mình không biết.Ở #13 bạn đã đề cập đến thuật toán
Vậy bạn biết thuật toán của bài trên liền kề là như thế nào chưa & có giống như bạn đã đề xuất không?
Xin trân thành cảm ơn bạn @SA_DQ rất nhiều và nhiều.Đặt vấn đề"
1./ Cột [D] đang chứa danh sách họ & tên nhân viên cơ quan bạn ([D1: D12]
2./ Danh sách họ Tên nhân viên & xen kẻ là các công việc đã làm đang nằm trên cột F (từ F1 trỡ xuống
Nguyễn văn An Ho & Ten #05 Thả trâu Nhữ Vũ Việt Công 7Cắt cỏ Nguyễn Vân Dung 3Trăn trâu Đưa trâu về Tắm rửa cho trâu Ngô Vũ Văn Bé Nhặt rau Nấu nước Pha trà Rửa bát Lau nhà Nấu cơm Vo gạo Nhữ Vũ Việt Công Rửa chén Giặt quần áo Là quần áo Phơi quần áo Thu dọn quần áo Nguyễn Vân Dung Đi học Buổi chiều tập đá bóng Buổi tối học bài lại
Lúc đó bạn cho macro sau chạy sẽ có` kết quả:
PHP:Sub LietKeKhac05() Dim Rng As Range, sRng As Range, Cls As Range Dim W As Integer, Dm As Integer: Dim Ma As String ReDim Arr(1 To 9, 1 To 2) 1 [H2].CurrentRegion.Offset(1).Clear Set Rng = Range([d1], [d1].End(xlDown)) 3 For Each Cls In Range([f1], [f1].End(xlDown)) Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole) 5 If sRng Is Nothing Then Dm = Dm + 1 7 Else If (Dm = 0 And W = 0) Then W = W + 1 9 If Cls.Row <> 1 And Dm <> 5 Then Arr(W, 1) = Ma: Arr(W, 2) = Dm 11 W = W + 1: End If 13 Ma = Cls.Value: Dm = 0 End If 15 Next Cls If Dm > 0 And Dm <> 5 Then 17 Arr(W, 1) = Ma: Arr(W, 2) = Dm End If 19 If W Then [H2].Resize(W, 2).Value = Arr() End Sub