Giúp code điền số liệu, nếu là cell trống! (1 người xem)

Liên hệ QC

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

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,328
Được thích
1,765
Em chào Thầy cô & Anh chị!
Vui lòng giúp em code như sau:

1/ Nếu tại cột B có dữ liệu mà cột D còn trống thì sẽ điền số liệu từ cột B sang cột D. Ngược lại, cột D đã có dữ liệu thì giữ nguyên giá trị của cột D (nghĩa là kg thay đổi)

2/ Tương tự.Nếu tại cột G có dữ liệu mà cột E còn trống thì sẽ điền số liệu từ cột G sang cột E. Ngược lại, cột E đã có dữ liệu thì giữ nguyên giá trị của cột E (nghĩa là kg thay đổi)

3/ Lưu ý: Vùng dữ liệu của em không liên tục
Em xin cảm ơn!
 

File đính kèm

Em chào Thầy cô & Anh chị!
Vui lòng giúp em code như sau:

1/ Nếu tại cột B có dữ liệu mà cột D còn trống thì sẽ điền số liệu từ cột B sang cột D. Ngược lại, cột D đã có dữ liệu thì giữ nguyên giá trị của cột D (nghĩa là kg thay đổi)

2/ Tương tự.Nếu tại cột G có dữ liệu mà cột E còn trống thì sẽ điền số liệu từ cột G sang cột E. Ngược lại, cột E đã có dữ liệu thì giữ nguyên giá trị của cột E (nghĩa là kg thay đổi)

3/ Lưu ý: Vùng dữ liệu của em không liên tục
Em xin cảm ơn!
Mình làm yêu cầu 2 nhé còn 1 thì tương tự, bạn tự làm nhé, ai thích treo máy thì test thử, hiiiiiiiiiiiii
PHP:
Sub Filldata()
Dim i As Long
For i = 9 To 20
    If Cells(i, 5).Value = "" Then Cells(i, 5).Value = Cells(i, 7).Value
Next
End Sub

Treo máy thử xem sao, ^^ :
PHP:
Sub Filldata()
Dim sArr(), i As Long
sArr = Range("B9:G20000").Value
For i = 1 To UBound(sArr)
    If sArr(i, 3) = "" Then sArr(i, 3) = sArr(i, 1)
    If sArr(i, 4) = "" Then sArr(i, 4) = sArr(i, 6)
Next
[B9:G20000].Value = sArr
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm yêu cầu 2 nhé còn 1 thì tương tự, bạn tự làm nhé, ai thích treo máy thì test thử, hiiiiiiiiiiiii
PHP:
Sub Filldata()
Dim i As Long
For i = 9 To 20
    If Cells(i, 5).Value = "" Then Cells(i, 5).Value = Cells(i, 7).Value
Next
End Sub

Treo máy thử xem sao, ^^ :
PHP:
Sub Filldata()
Dim sArr(), i As Long
sArr = Range("B9:G20000").Value
For i = 1 To UBound(sArr)
    If sArr(i, 3) = "" Then sArr(i, 3) = sArr(i, 1)
    If sArr(i, 4) = "" Then sArr(i, 4) = sArr(i, 6)
Next
[B9:G20000].Value = sArr
End Sub

Mấy bài này đơn giản quá lẽ ra chỉ nên ném cái cần câu la đủ rồi. H VAN ơi code này đơn giản mà
 
Upvote 0
Mình thử hướng dẫn 1 cách khác nữa cho người mới bắt đầu xem sao:

Khai báo 3 biến, 2 trong số đó có kiểu là Range, còn lại là Long;
Tìm dòng cuối có dữ liệu gán vô biến kiểu Long (Tìm trên diễn đàn fương thức FIND("*",. . .); & vì tác giả nói dữ liệu có chổ không liên tục, nên fải làm việc này)

Đem vùng của cột cần khảo sát từ ô kề dưới ô thứ 8 cho đến ô thuộc dòng cuối có dữ liệu gán vô biến đối tượng;

Sau đó dùng fương thức SpecialCells(xlCellTypeBlanks) để chỉ chọn ra những ô còn trống trong vùng

Nếu bạn gán vùng này vô biến đối tượng Rng, thì Rng(1) sẽ là ô đầu tiên không dữ liệu.

Sau đó bạn xử mấy chàng ô trống này bằng cách nào tùy thích.
 
Upvote 0
Upvote 0
Vậy Hong.van thử sức với thuật toán mới mà bác ChanhTQ hướng dẫn nhé.
Cái cần câu bác ấy quăng ra thú vị hơn cách mình làm. Hiiiii

Thú vị thể hiện ở chổ:
Nếu ta gọi cột cần thêm những dữ liệu vô những ô trống là Dh & cột sẽ lấy số liệu để điền (vô Dh) là cột Ng;

Thì ô cuối có dữ liệu của Ng có chỉ số dòng lớn hơn chỉ số dòng của ô cuối có dữ liệu của Dh (con số 20 là do trực quan đem lại) thì macro chưa hoàn thành trách nhiệm.

Chúc ngày cuối tuần vui vẻ
 
Upvote 0

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

Back
Top Bottom