Nhờ các anh chị giúp code ghi dữ liệu theo hàng có điều kiện (1 người xem)

Liên hệ QC

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

khaothibaclieu

Thành viên hoạt động
Tham gia
10/4/08
Bài viết
113
Được thích
14
Do yêu cầu công việc nên em nhờ các anh chị viết giúp một Module ghi dữ liệu theo hàng giúp em.
Yêu cầu là chương trình sẽ căn cứ theo số lượng (cột E) ở dòng hiện hành để ghi số hiệu và số vào sổ vào dòng tương ứng. Số lượng bao nhiêu thì cho phép ghi số hiệu và số vào sổ tương ứng bấy nhiêu.
Ví dụ: Em nhập vào ô D8 là LÂM TÂM NHƯ, ô E8 là 3, em nhập vào ô E4 là 0001, ô E5 là 01, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở dòng ô F8, G8.
Sau đó em lại nhập vào ô E4 là 0002, ô E5 là 02, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở ô H8, I8. Em lại tiếp tục nhập vào ô E4 là 0003, ô E5 là 03, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở ô J8, K8. Sau đó không cho phép nhập tiếp vì số lượng ở ô E8 là 3 mà.
Tương tự em sẽ tiếp nhập thông tin về họ tên và số lượng ở ô D9 và E9, nhập số hiệu vẫn ở ô E4, số vào sổ ở ô E5, chương trình tiếp tục căn cứ vào số lượng ở ô E9 để lấy thông tin về các ô tương ứng cho đến khi đủ số lượng thì thôi.
(Có file gửi kèm).
Xin cám ơn trước.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình thì không biết code VBA đâu... Nhưng mình có cách thủ công này... Bạn xem thử xem sao...
Sử dụng Data Validation... để khống chế dữ liệu nhập tay... Nếu ô đó nằm ở vùng lớn hơn cái số lượng thì sẽ hiện lỗi là không được nhập...
1. Tạo vùng xác định vùng bằng cách thêm 1 dòng vào bên dưới tiêu đề... và nhập là
Mã:
1      1       2       2        3       3
2. Tô chọn vùng nhập dữ liệu... Và chọn Data Validation... và nhập công thức là
Mã:
=F$8<=$E9
 

File đính kèm

Upvote 0
Bạn chép đoạn này vào module, dữ liệu các sổ chỉ chạy khi bạn điền số liệu vào ô số lượng, còn họ tên có nhập hay không không quan trọng.

Sub Ghidulieu()
dcE = Cells(Rows.Count, 5).End(xlUp).Row
e4 = Cells(4, 5).Value
e5 = Cells(5, 5).Value
For i = 8 To dcE
If Cells(i, 5).Value <> "" Then
dem = 1
For k = 1 To Cells(i, 5).Value
Cells(i, 5 + dem).Value = e4
Cells(i, 5 + dem + 1).Value = e5
dem = dem + 2
Next k
End If
Next
End Sub


Chúc bạn vui vẻ!/-*+/
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thì không biết code VBA đâu... Nhưng mình có cách thủ công này... Bạn xem thử xem sao...
Sử dụng Data Validation... để khống chế dữ liệu nhập tay... Nếu ô đó nằm ở vùng lớn hơn cái số lượng thì sẽ hiện lỗi là không được nhập...
1. Tạo vùng xác định vùng bằng cách thêm 1 dòng vào bên dưới tiêu đề... và nhập là
Mã:
1      1       2       2        3       3
2. Tô chọn vùng nhập dữ liệu... Và chọn Data Validation... và nhập công thức là
Mã:
=F$8<=$E9

Cám ơn bạn. Mình cần code để đưa vào ứng dụng của mình.
 
Upvote 0
Đoạn trên nó ghi đè lên dữ liệu của bạn đã nhập.

Sub Ghidulieu()
dcE = Cells(Rows.Count, 5).End(xlUp).Row
e4 = Cells(4, 5).Value
e5 = Cells(5, 5).Value
For i = 8 To dcE
If Cells(i, 5).Value <> "" And Cells(i, 6).Value = "" Then
dem = 1
For k = 1 To Cells(i, 5).Value
Cells(i, 5 + dem).Value = e4
Cells(i, 5 + dem + 1).Value = e5
dem = dem + 2
Next k
End If
Next
End Sub

Đoạn này thì ok rồi đây.
 
Upvote 0
Đoạn trên nó ghi đè lên dữ liệu của bạn đã nhập.

Sub Ghidulieu()
dcE = Cells(Rows.Count, 5).End(xlUp).Row
e4 = Cells(4, 5).Value
e5 = Cells(5, 5).Value
For i = 8 To dcE
If Cells(i, 5).Value <> "" And Cells(i, 6).Value = "" Then
dem = 1
For k = 1 To Cells(i, 5).Value
Cells(i, 5 + dem).Value = e4
Cells(i, 5 + dem + 1).Value = e5
dem = dem + 2
Next k
End If
Next
End Sub

Đoạn này thì ok rồi đây.

Cám ơn bạn rất nhiều. Bạn rất nhiệt tình.
Nhưng code bạn chưa đúng ý mình lắm. Code của bạn là mình chỉ nhập một lần ở ô E4 và E5, sau đó chương trình lấy xuống các ô tương ứng theo số lượng. Còn ý của mình là chương trình căn cứ vào số lượng, sẽ cho phép nhập thủ công vào ô E4 và ô E5, để lấy lần lượt vào các ô tương ứng cùng dòng.
Bạn chịu khó xem lại giúp mình yêu cầu ở bài 1 nhé.
 
Upvote 0
Cám ơn bạn rất nhiều. Bạn rất nhiệt tình.
Nhưng code bạn chưa đúng ý mình lắm. Code của bạn là mình chỉ nhập một lần ở ô E4 và E5, sau đó chương trình lấy xuống các ô tương ứng theo số lượng. Còn ý của mình là chương trình căn cứ vào số lượng, sẽ cho phép nhập thủ công vào ô E4 và ô E5, để lấy lần lượt vào các ô tương ứng cùng dòng.
Bạn chịu khó xem lại giúp mình yêu cầu ở bài 1 nhé.

Code này là đúng yêu cầu của bạn đây.

Mã:
Sub Ghidulieu()    
dcE = Cells(Rows.Count, 5).End(xlUp).Row
    For i = 8 To dcE
        If Cells(i, 5).Value <> "" Then
            For k = 1 To Cells(i, 5).Value
                If Cells(i, 4 + k * 2).Value = "" or Cells(i, 5 + k * 2).Value = "" Then
                    Cells(i, 5 + k * 2 - 1).Value = Cells(4, 5).Value
                    Cells(i, 5 + k * 2).Value = Cells(5, 5).Value
                    Exit Sub
                End If
            Next k
        End If
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Do yêu cầu công việc nên em nhờ các anh chị viết giúp một Module ghi dữ liệu theo hàng giúp em.
Yêu cầu là chương trình sẽ căn cứ theo số lượng (cột E) ở dòng hiện hành để ghi số hiệu và số vào sổ vào dòng tương ứng. Số lượng bao nhiêu thì cho phép ghi số hiệu và số vào sổ tương ứng bấy nhiêu.
Ví dụ: Em nhập vào ô D8 là LÂM TÂM NHƯ, ô E8 là 3, em nhập vào ô E4 là 0001, ô E5 là 01, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở dòng ô F8, G8.
Sau đó em lại nhập vào ô E4 là 0002, ô E5 là 02, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở ô H8, I8. Em lại tiếp tục nhập vào ô E4 là 0003, ô E5 là 03, chương trình sẽ lấy dữ liệu ở ô E4 và ô E5 xuống ở ô J8, K8. Sau đó không cho phép nhập tiếp vì số lượng ở ô E8 là 3 mà.
Tương tự em sẽ tiếp nhập thông tin về họ tên và số lượng ở ô D9 và E9, nhập số hiệu vẫn ở ô E4, số vào sổ ở ô E5, chương trình tiếp tục căn cứ vào số lượng ở ô E9 để lấy thông tin về các ô tương ứng cho đến khi đủ số lượng thì thôi.
(Có file gửi kèm).
Xin cám ơn trước.
Đúng là có nhiều bài "oái oăm" thật
Làm theo ý bạn thì dễ thôi, nhưng có thể phát sinh nhiều cái linh tinh sau này mà ta chưa lường trước được
Những cái cần lưu ý:
1) Cột E từ [E8] phải có dữ liệu & lớn hơn 0
2) Nhập liệu ở [E4] trước, sau đó mới tới [E5], nếu không code sẽ ...không làm gì và chọn [E4] ( ý nói mời "ông" nhập liệu vào đây)
Thôi, cứ xem trong file, có gì nói sau, mấy cái code dùng sự kiện mình.....sợ lắm vì ....rất dốt về em này
Thân
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom