Cách lấp đầy ô Blank bằng giá trị ngay trên. (1 người xem)

Liên hệ QC

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

vân anh lương

Thành viên mới
Tham gia
13/2/15
Bài viết
3
Được thích
0
Giới tính
Nữ
Mình đang có 01 bảng như dưới gồm những dòng blank và những dòng có giá trị.

Mình muốn những ô blank sẽ có giá trị bằng ô có giá trị gần nhất.

AAA
blank -- muốn chuyển thành AAA
blank -- muốn chuyển thành AAA
BBB
CCC
blank -- muốn chuyển thành CCC
blank -- muốn chuyển thành CCC


Mong admin support.
 

File đính kèm

Mình đang có 01 bảng như dưới gồm những dòng blank và những dòng có giá trị.

Mình muốn những ô blank sẽ có giá trị bằng ô có giá trị gần nhất.

AAA
blank -- muốn chuyển thành AAA
blank -- muốn chuyển thành AAA
BBB
CCC
blank -- muốn chuyển thành CCC
blank -- muốn chuyển thành CCC


Mong admin support.

mới học VBA thực hành luôn :)

Mã:
Sub dien_vao_o_blank()

Dim i As Long
For i = 11 To 1000
If Cells(i, "D").Value = "" Then
Cells(i, "D").Value = Cells(i - 1, "D").Value
End If
Next i

End Sub
 
Con số 1000 đó sẽ có vài vấn đề
1./ Có thể dữ liệu có nhiều cột hơn 1 là cái chắc; Khi đó chưa thể khẳng định ô cuối của cột [D: D] (mà ta đang khảo sát ) là ô cuối cùng có dữ liệu; của toàn trang tính
Giả sử (cho dễ hiểu) lả ô D890 của cột [D: D] là ô cuối có dữ liệu của cột này; Nhưng cột [E:E] bên fải có ô E900 là ô cuối có dự liệu;
Chắc sẽ fải điền trị khác rổng cho những ô [D891: D900] trị mà [D890] đang chứa.

Như vậy bài toàn sẽ fải xác định ô cuối cùng có dữ liệu trên trang tính này.
Để tìm ô cuôi cùng có dữ liệu của 1 trang tính, ta fải xài fương thức FIND("*",. . .) là tốt hơn cả.

2./ Trị trước ô rỗng trong cột [D: d] cần ghi lại vô tham biến để còn điền nhiều lần liên tiếp khi có nhiều ô trống liên tục;

3./ (Cao hơn) Sau khi ta xác định được dòng cuối có dữ liệu; ta có thể duyệt trong cột [D: D] này nhờ fương thức .End (xlDown)
 
Mình đang có 01 bảng như dưới gồm những dòng blank và những dòng có giá trị.

Mình muốn những ô blank sẽ có giá trị bằng ô có giá trị gần nhất.

AAA
blank -- muốn chuyển thành AAA
blank -- muốn chuyển thành AAA
BBB
CCC
blank -- muốn chuyển thành CCC
blank -- muốn chuyển thành CCC


Mong admin support.
Dùng thử code này.
Mã:
Sub GPE()
   Dim Rng As Range
   For Each Rng In Range("D11:D18").SpecialCells(xlCellTypeBlanks).Areas
        Rng.Value = Rng.Cells(1, 1).Offset(-1).Value
   Next Rng
End Sub
 
Mình đang có 01 bảng như dưới gồm những dòng blank và những dòng có giá trị.

Mình muốn những ô blank sẽ có giá trị bằng ô có giá trị gần nhất.

AAA
blank -- muốn chuyển thành AAA
blank -- muốn chuyển thành AAA
BBB
CCC
blank -- muốn chuyển thành CCC
blank -- muốn chuyển thành CCC


Mong admin support.
Bôi nguyên dòng đó, chọn Home-> Find & Select-> Goto Special- chọn Blanks, sau đó gõ =ô phía trên
Kết thúc bằng Ctrl+ Enter
1530535263488.png
 
Mình đang có 01 bảng như dưới gồm những dòng blank và những dòng có giá trị.

Mình muốn những ô blank sẽ có giá trị bằng ô có giá trị gần nhất.

AAA
blank -- muốn chuyển thành AAA
blank -- muốn chuyển thành AAA
BBB
CCC
blank -- muốn chuyển thành CCC
blank -- muốn chuyển thành CCC


Mong admin support.
Tôi thắc mắc sao các bạn hay hỏi vu vơ thế nhĩ.
1/ Hỏi thì dữ liệu nó phải tương đối giống thực tế 1 tí (thông thường thì tiêu đề cột nằm dòng 3, 4.
2/ Ví dụ thì cũng nên có vài cột để còn áp dụng cho trườp hợp khác, ví dụ tôi muốn gán 1 loạt cột bất kỳ mà nó không nằm riêng cột D thì tính sao?
 
Con số 1000 đó sẽ có vài vấn đề
1./ Có thể dữ liệu có nhiều cột hơn 1 là cái chắc; Khi đó chưa thể khẳng định ô cuối của cột [D: D] (mà ta đang khảo sát ) là ô cuối cùng có dữ liệu; của toàn trang tính
Giả sử (cho dễ hiểu) lả ô D890 của cột [D: D] là ô cuối có dữ liệu của cột này; Nhưng cột [E:E] bên fải có ô E900 là ô cuối có dự liệu;
Chắc sẽ fải điền trị khác rổng cho những ô [D891: D900] trị mà [D890] đang chứa.

Như vậy bài toàn sẽ fải xác định ô cuối cùng có dữ liệu trên trang tính này.
Để tìm ô cuôi cùng có dữ liệu của 1 trang tính, ta fải xài fương thức FIND("*",. . .) là tốt hơn cả.

2./ Trị trước ô rỗng trong cột [D: d] cần ghi lại vô tham biến để còn điền nhiều lần liên tiếp khi có nhiều ô trống liên tục;

3./ (Cao hơn) Sau khi ta xác định được dòng cuối có dữ liệu; ta có thể duyệt trong cột [D: D] này nhờ fương thức .End (xlDown)
Cảm ơn bác, có phải như dưới đây không ạ?
Mã:
Sub blank()
Dim i As Long
Dim dong_cuoi As Long
With ActiveSheet
dong_cuoi = Cells(.Rows.Count, "D").End(xlUp).Row
End With
For i = 11 To dong_cuoi + 1
If Cells(i, "D").Value = "" Then
Cells(i, "D").Value = Cells(i - 1, "D").Value
End If
Next i

End Sub
 
Nếu mở bộ thu macro lên & thao tác với csdl của tác giả bài đăng theo đúng những gì mà #6 đã hướng dẫn, ta sẽ có macro như sau:
PHP:
Sub CTRL_ENTER()
' CTRL_ENTER Macro      '
    Range("D11:D19").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "=R[-1]C"
End Sub

Mình nêu là với CSDL của chủ bài đăng, vì CSDL như vậy rất ít có tính thực tiển.
Nếu là CSDL thực thụ, vấn đề sẽ fát tiến hành theo 1 qui trình khác hơn.
 
Nếu mở bộ thu macro lên & thao tác với csdl của tác giả bài đăng theo đúng những gì mà #6 đã hướng dẫn, ta sẽ có macro như sau:
.......................................
Mình nêu là với CSDL của chủ bài đăng, vì CSDL như vậy rất ít có tính thực tiển.
Nếu là CSDL thực thụ, vấn đề sẽ fát tiến hành theo 1 qui trình khác hơn.
Thông thường các thành viên cứ nghĩ sao hỏi vậy, nhưng không quan tâm đến File thực tiển đang sử dụng.
Bởi vậy, khi được trợ giúp xong lại không áp dụng được vào File thực tế, lúc đó lại nêu:
- Sao em áp dụng vào File em không được.
- Sao em áp dụng vào File em kết quả không trúng.
- Sao em áp dụng vào File em không có kết quả.
- Anh gán code vô File này giùm em gán và nó không chạy.
Ôi thôi còn nhiều thứ nữa kể không siết.

Lưu ý:
-
Code chỉ áp dụng với dữ liệu có tiêu đề từ dòng 1 đến dòng 4.
- Code sẽ điền tất cả các Cell trống (từ dòng tiêu đề trở xuống) với giá trị là Cell trên nó.
- Nếu cột nào không cần điền thì Insert trước nó 1 cột trống.
Mã:
Sub LapDay_ChoTrong()
    Sheet1.Range("A4").CurrentRegion.SpecialCells(xlCellTypeBlanks) _
        .Interior.ColorIndex = 34
    Sheet1.Range("A4").CurrentRegion.SpecialCells(xlCellTypeBlanks) _
        .FormulaR1C1 = "=R[-1]C"
    With Range("A4").EntireColumn
           .Value = .Value
    End With
End Sub
Dữ liệu là những Cell trống (tô màu tím) trước khi chạy code:
A_H.JPG

Kết quả sau khi chạy code, nó sẽ tô màu xanh cho những Cell được điền.
A_Ketqua.JPG
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom