Nhập tự động chuổi A A A B B B bắt đầu bằng A hoặc B

  • Thread starter Thread starter joehui
  • Ngày gửi Ngày gửi
Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

joehui

Thành viên mới
Tham gia
8/4/23
Bài viết
44
Được thích
4
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à A

Trong 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
 

File đính kèm

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

PHP:
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
 

File đính kèm

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

PHP:
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
Cám ơn bạn, để mình thử dùng VBA thử xem có được không, sẽ cho bạn biết kết quả

Excel 2007 làm được không bạn, bạn hướng dẫn cách làm giúp mình cám ơn
 
Được hay không thì bạn cứ thử save file dạng .xlsm hay.xlsb rồi chạy thử
làm được rồi bạn ơi, kết quả chạy đúng, cám ơn bạn nhiều
Bài đã được tự động gộp:

Được hay không thì bạn cứ thử save file dạng .xlsm hay.xlsb rồi chạy thử
Bạn ơi, mình có một chổ cần chỉnh, bạn giúp mình chỉnh code lai giúp nhe

lúc bắt đầu thì phụ thuộc vào giá trị trong G5 là A hoặc B để xác định là dãy 3A đầu tiên hay dãy 3B đầu tiên,

Bây giờ mình có thay đổi vầy,

Tại ô G6 mình sẽ nhập giá trị A hoặc B để xác định chuổi 3A hoặc 3B sẽ được chạy và sau khi mình nhập ô J6 là giá trị nhập bằng tay, khi mình enter giá trị ô J6 xong thì bên ô G7 sẽ nhảy tiếp kết quả,

Bạn giúp mình sửa lại nhe, cám ơn bạn nhiều
 
Lần chỉnh sửa cuối:
Thử lại nhé:
PHP:
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
 

File đính kèm

Thử lại nhé:
PHP:
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ước 1. nhập A hoặc B để xác định chuổi 3A hay 3B sẽ được khởi chạy tại ô G6

Bước 2. di chuyển đến vị trí ô J6 nhập giá trị A hoặc B hoặc M rồi Enter

lúc này sau khi Enter tại ô J6 thì ô G7 sẽ tự động hiện ra tiếp A hoặc B rồi tại ô J7 mình nhập bằng tay giá trị vào ô J7 là A hoặc B hoặc M Enter

SAu khi enter ở J7 thì tự động nhập A hoặc B cho ô G8 ........

như vầy mới đúng nè bạn ơi
 
CÓ online hổ trợ giúp mình nhe
 
Bước 1. nhập A hoặc B để xác định chuổi 3A hay 3B sẽ được khởi chạy tại ô G6

Bước 2. di chuyển đến vị trí ô J6 nhập giá trị A hoặc B hoặc M rồi Enter

lúc này sau khi Enter tại ô J6 thì ô G7 sẽ tự động hiện ra tiếp A hoặc B rồi tại ô J7 mình nhập bằng tay giá trị vào ô J7 là A hoặc B hoặc M Enter

SAu khi enter ở J7 thì tự động nhập A hoặc B cho ô G8 ........

như vầy mới đúng nè bạn ơi
Bạn gửi lại kết quả giả lập lên xem nào
 
Bạn gửi lại kết quả giả lập lên xem nào

1 nhập A / B G6 rồi Enter
2 nhập A / B / M J6 rồi enter
3 G7 sẽ tự động nhập A / B theo 3A hay 3 B
4 nhập A / B / M J7 rồi Enter
5 G8 sẽ tự động nhập A / B theo 3A hay 3B
6 nhập A / B / M J8 rồi Enter
7 G9 sẽ tự động nhập A / B theo 3A hay 3B
8 nhập A / B / M J9 rồi Enter
10 G10 sẽ tự động nhập A / B / M theo 3A hay 3B
… …

G6 chỉ nhập 1 lần rồi chạy tự động còn J6 sẽ nhập bằng tay cho tới J7 J8 .... Jn, n lớn nhất là 84
 
Dùng cách gì củng được, dùng công thức củng được, miễn sao ra kết quả đúng là được, mình cám ơn
 
1 nhập A / B G6 rồi Enter
2 nhập A / B / M J6 rồi enter
3 G7 sẽ tự động nhập A / B theo 3A hay 3 B
4 nhập A / B / M J7 rồi Enter
5 G8 sẽ tự động nhập A / B theo 3A hay 3B
6 nhập A / B / M J8 rồi Enter
7 G9 sẽ tự động nhập A / B theo 3A hay 3B
8 nhập A / B / M J9 rồi Enter
10 G10 sẽ tự động nhập A / B / M theo 3A hay 3B
… …

G6 chỉ nhập 1 lần rồi chạy tự động còn J6 sẽ nhập bằng tay cho tới J7 J8 .... Jn, n lớn nhất là 84
Mình muốn bạn gửi kết quả mẫu như bài trước ấy, kẻo mất thời gian đôi bên
 
Mình muốn bạn gửi kết quả mẫu như bài trước ấy, kẻo mất thời gian đôi bên
bạn đọc bài #10, bạn nhập liệu 1 dòng đúng như thứ tự trong bài #10 bạn sẽ hiểu, khi bạn enter thì kết quả cột G phải nhập tự động A hoặc B
nhưng lúc bắt đầu thì G6 sẽ được nhập tay 1 lần và từ G7 sẽ không phải nhập tay nửa,

Chỉ nhập tay cột J, nhập tay từ J6 trở về sau cho đến J84

Bạn chổ nào chưa rõ mình sẽ nói thêm
 
PHP:
Sub TaoDeBaiNgauNhien()
Dim J As Integer, W As Integer

[J6:J84].Value = "":                Randomize
W = 6 + 84 * Rnd() \ 1
 ' Tao Ngâu Nhiên Giá Tri Ô G5    '
If W Mod 2 = 0 Then [G5].Value = "A" Else [G5].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
Mã:
Sub DienTriAHayBTrenCotG()
 Dim J As Integer
 Dim StrC As String, Tmp As String
 
 Tmp = [G5].Value
1 'Tao Chuôi Lap Lai AAABBB . .  Hay BBBAAA . . .    '
 For J = 6 To 84    'Sô Dòng Tôi Da '
    If J Mod 3 = 0 Then
        If Tmp = "A" Then Tmp = "B" Else Tmp = "A"
    End If
    StrC = StrC & Tmp
 Next J
' [N2].Value = StrC '
 For J = 6 To 84
    If Cells(J, "J").Value <> "M" Then
        Cells(J, "G").Value = Left(StrC, 1)
        StrC = Mid(StrC, 2, Len(StrC))
    Else
        Cells(J, "G").Value = "M"
    End If
 Next J
End Sub

Macro cha sẽ tạo ở [G5] 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'
(Sẽ điền 'M' cùng dòng khi bên cột 'J' có 'M')
 
Lần chỉnh sửa cuối:
PHP:
Sub TaoDeBaiNgauNhien()
Dim J As Integer, W As Integer

[J6:J84].Value = "":                Randomize
W = 6 + 84 * Rnd() \ 1
 ' Tao Ngâu Nhiên Giá Tri Ô G5    '
If W Mod 2 = 0 Then [G5].Value = "A" Else [G5].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
Mã:
Sub DienTriAHayBTrenCotG()
 Dim J As Integer
 Dim StrC As String, Tmp As String
 
 Tmp = [G5].Value
1 'Tao Chuôi Lap Lai AAABBB . .  Hay BBBAAA . . .    '
 For J = 6 To 84    'Sô Dòng Tôi Da '
    If J Mod 3 = 0 Then
        If Tmp = "A" Then Tmp = "B" Else Tmp = "A"
    End If
    StrC = StrC & Tmp
 Next J
' [N2].Value = StrC '
 For J = 6 To 84
    If Cells(J, "J").Value <> "M" Then
        Cells(J, "G").Value = Left(StrC, 1)
        StrC = Mid(StrC, 2, Len(StrC))
    Else
        Cells(J, "G").Value = "M"
    End If
 Next J
End Sub

Macro cha sẽ tạo ở [G5] 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 lên cột 'G' khi cùng dòng trên cột 'J' không có 'M'
(Sẽ điền 'M' cùng dòng khi bên cột 'J' có 'M')
Bạn hướng dẫn gắn macro này vô file làm sao cho đúng dùm bạn.
 
Bạn có thể lấy file #6 & tìm đến (các) macro đã có trên nó;
Nếu thấy thì chép cha con #15 lên cửa sổ đang có macro đó & chạy đến khi mệt!
 
Mình không biết làm bạn có thể cho mình sdt mình gọi bạn hướng dẫn giúp,
Cám ơn bạn
 
Mình (1) không biết làm (2) bạn có thể cho mình sdt mình gọi bạn hướng dẫn giúp,
Cám ơn bạn
(1) Năm 95 mình cũng CHƯA biết làm & cũng chưa có GPE.COM để hỗ trợ
Bạn sẽ phải nói rằng bạn chưa biết làm chứ không thể là không biết làm;

(2) Số của mình là 0909 090 909 & khuyên bạn đừng có gọi để mất tiền oan!
 
Mình đã ghi lại diễn giải thực tế của mình cho việc nhập AAA hoặc BBB theo điều kiện, mong anh chị xem lại dùm mình

aaabbb.png
 

File đính kèm

Web KT

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

Back
Top Bottom