Nhập tự động chuổi A A A B B B bắt đầu bằng A hoặc B
Chào các anh chị,
Cám ơn các anh chị đã giúp đỡ những ngày qua, nay mình có một chuổi nhập liệu liên tục cho các ô theo chiều dọc ví dụ tại A6 là A thì A7 và A8 sẽ là A
và tiếp tục tại A9 A10 A11 sẽ là B và lặp lại A12 A13 A14 se là ATrong quá trình nhập 3A hoặc 3B mà có dữ liệu là M chen giữa thì phải điền tiếp A hoặc B cho đủ chuổi 3A hoặc 3B
Anh chị vui lòng xem file đính kèm có ví dụ và diễn giải chi tiết,
Cám ơn anh chị nhiều
Một phương án dùng VBA.
Mỗi khi thay đổi giá trị tại ô G5, hoặc cột J, thì cột G sẽ tự động thay đổi theo.
Cách dùng:
Click chuột phải vào tên sheet, chọn ViewCode, dán code này vào. Lưu file dạng .xlsm hay .xlsb
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, rng, res(), count&
If Intersect(Target, Range("G5, J6:J84")) Is Nothing Then Exit Sub
rng = Range("J6:J84").Value
ReDim res(1 To UBound(rng), 1 To 1)
For i = 1 To UBound(rng)
Select Case rng(i, 1)
Case ""
res(i, 1) = ""
Case "M"
res(i, 1) = "M"
Case Else
count = count + 1
If WorksheetFunction.IsOdd(Int((count – 1) / 3) + 1) Then
res(i, 1) = Range("G5")
Else
res(i, 1) = IIf(Range("G5") = "A", "B", "A")
End If
End Select
Next
Range("G6:G84").Value = res
End Sub
www.giaiphapexcel.com/diendan/threads/nh%E1%BA%ADp-t%E1%BB%B1-%C4%91%E1%BB%99ng-chu%E1%BB%95i-a-a-a-b-b-b-b%E1%BA%AFt-%C4%91%E1%BA%A7u-b%E1%BA%B1ng-a-ho%E1%BA%B7c-b.165417/
Khoá học Trưởng phòng nhân sự
Nguồn nhân lực là một trong Tứ trụ kinh doanh của doanh nghiệp, có tác động tới sự tồn tại và phát triển bền...
Xem khóa học
Thử lại nhé:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, rng, res(), count&
If Intersect(Target, Range("G6, J6:J84")) Is Nothing Then Exit Sub
rng = Range("J6:J84").Value
ReDim res(1 To UBound(rng), 1 To 1)
res(1, 1) = Range("G6")
count = 1
For i = 2 To UBound(rng)
Select Case rng(i, 1)
Case ""
res(i, 1) = ""
Case "M"
res(i, 1) = "M"
Case Else
count = count + 1
If WorksheetFunction.IsOdd(Int((count – 1) / 3) + 1) Then
res(i, 1) = Range("G6")
Else
res(i, 1) = IIf(Range("G6") = "A", "B", "A")
End If
End Select
Next
Application.EnableEvents = False
Range("G6:G84").Value = res
Application.EnableEvents = True
End Sub
Bạn gửi lại kết quả giả lập lên xem nào
Sub TaoDeBaiNgauNhien()
Dim J As Integer, W As Integer
.Value = "": Randomize
W = 6 + 84 * Rnd() 1
' Tao Ngâu Nhiên Giá Tri Ô G5 '
If W Mod 2 = 0 Then .Value = "A" Else .Value = "B"
' Tao Ngâu Nhiên 'M' tai Côt "J" '
For J = 6 To 84
W = 84 + 17 * Rnd() 1
If W / J = W J Then Cells(J, "J").Value = "M"
Next J
DienTriAHayBTrenCotG
End Sub
Macro cha sẽ tạo ở trị ngẫu A hay B & tạo ký tự 'M' ngãu nhiên trên cột "J"
Sau đó gọi macro con làm tiếp công đoạn:
Điền ký tự luân phiên A hay B sau mỗi 3 lần lặp lên cột 'G' khi cùng dòng trên cột 'J' không có 'M'
Chỉnh dòng này:
If Intersect(Target, Range("G6,J6:J84")) Is Nothing Then Exit Sub
thành
If Intersect(Target, Range("J6:J84")) Is Nothing Then Exit Sub