Điền dữ liệu vào ô trống trong VBA (1 người xem)

  • Thread starter Thread starter kaviku
  • Ngày gửi Ngày gửi
Liên hệ QC

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

kaviku

Thành viên mới
Tham gia
4/6/09
Bài viết
7
Được thích
1
Mọi người cho em hỏi vấn đề về code VBA trong excel được không ạ?
Giả sử mình có 1 file csv có dữ liệu ở nhiều cột.
Trong đó có 1 vài cột không có dữ liệu ở các dòng cuối cùng
Giờ mình muốn làm 1 VBA xét từ row1 đến row cuối cùng của cái csv của 1 cột nào đó , nếu ô nào rỗng thì điền số 0 vào.
Mình có ví dụ file csv bên dưới
 

File đính kèm

Mọi người cho em hỏi vấn đề về code VBA trong excel được không ạ?
Giả sử mình có 1 file csv có dữ liệu ở nhiều cột.
Trong đó có 1 vài cột không có dữ liệu ở các dòng cuối cùng
Giờ mình muốn làm 1 VBA xét từ row1 đến row cuối cùng của cái csv của 1 cột nào đó , nếu ô nào rỗng thì điền số 0 vào.
Mình có ví dụ file csv bên dưới
Cần gì phải VBA cho mất công nhỉ. Chọn nguyên vùng đó => Bấm F5 => Special => Blanks => Ok => Gõ vô số 0 => Ctrl + Enter, như vậy có phải khoẻ hơn không. Nếu vẫn muốn code thì phản hồi lại.
 
Upvote 0
Cảm ơn bạn, mình muốn làm tự động vì có rất nhiều file csv cần điền như vậy
Mình đã làm vba load tất cả file csv trong 1 thư mục rồi
 
Upvote 0
Mọi người cho em hỏi vấn đề về code VBA trong excel được không ạ?
Giả sử mình có 1 file csv có dữ liệu ở nhiều cột.
Trong đó có 1 vài cột không có dữ liệu ở các dòng cuối cùng
Giờ mình muốn làm 1 VBA xét từ row1 đến row cuối cùng của cái csv của 1 cột nào đó , nếu ô nào rỗng thì điền số 0 vào.
Mình có ví dụ file csv bên dưới
Bạn tham khảo:
PHP:
Sub abc()
    Cells(1).CurrentRegion.SpecialCells(xlCellTypeBlanks).Formula = 0
End Sub
 
Upvote 0
Bạn tham khảo:
PHP:
Sub abc()
    Cells(1).CurrentRegion.SpecialCells(xlCellTypeBlanks).Formula = 0
End Sub
Không dùng Function hả bạn?
Mình đã làm như này

Function getStatistics(csv() As String, _ len_col As Integer, _
data_col As Integer, _
len_min As Double, _
len_max As Double) As Double()
Dim ofs As Integer
ofs = 5 '5s–Ú‚©‚ç

'Tong chieu dai
Dim len_total As Double
Dim a As Double

Dim n As Integer
n = 0

Dim row1 As Integer
For row1 = ofs To UBound(csv, 1)
a = csv(row1, len_col)
'Đoạn này mình cần xét trong 1 cột của 1 file csv, nếu ô nào rỗng thì điền 0 vào

If (n <= 3000) Then
n = n + 1

If (n = 1) Then

len_total = a * 0.2
Else
If (n = 2) Then

len_total = len_total + a * 0.2
Else
If (len_total < len_total + a * 0.2) Then len_total = len_total + a * 0.2
End If
End If
ElseIf (n > 2) Then
Exit For
End If
Next row1
 
Upvote 0
Vấn đề này mình xử lý đc rồi
Function Return0(col As Integer)Dim row1 As Integer
For row1 = 2 To 19
If (Cells(row1, col) = "") Then
Cells(row1, col) = "0"
End If
Next row1
End Function
Sub Main()
Dim ret As Integer
ret = Return0(6)
End Sub

Nhưng vấn đề lớn của mình là như này:
1. Đọc các file csv trong 1 thư mục
2. Trong file csv đó có 1 cột (AB chẳng hạn) không đủ dữ liệu đến hết dòng cuối cùng.
Do đó khi chạy macro cho đọc dữ liệu đến hết dòng cuối thì bị lỗi MissMatch 13.
Cụ thể là:
Khi click nút Get thì tìm đến thư mục chứa file csv, nó sẽ đọc file csv trong thư mục đó và tính toán dữ liệu cho cột Total Length thông qua cột BQ trong các file csv

Vấn đề này xử lý thế nào để giải quyết ạ?

Project của mình bên dưới nhé
 

File đính kèm

Upvote 0
Nhưng vấn đề lớn của mình là như này:
1. Đọc các file csv trong 1 thư mục
2. Trong file csv đó có 1 cột (AB chẳng hạn) không đủ dữ liệu đến hết dòng cuối cùng.
Do đó khi chạy macro cho đọc dữ liệu đến hết dòng cuối thì bị lỗi MissMatch 13.
Cụ thể là:
Khi click nút Get thì tìm đến thư mục chứa file csv, nó sẽ đọc file csv trong thư mục đó và tính toán dữ liệu cho cột Total Length thông qua cột BQ trong các file csv
Đã xem file của bác.
Bác cho em hỏi bác tính toán gì mà function với function, rồi class modules gì gớm vậy. Em đọc không nắm được gì.
Bác cần lấy dữ liệu từ nhiều file csv/ 1 lần hay 1 file csv / 1 lần. Lấy dữ liệu ở sheet/ dòng/ cột nào? Lấy xong thì tính toán cái gì và ném kết quả vào chỗ nào?
 
Upvote 0
Đã xem file của bác.
Bác cho em hỏi bác tính toán gì mà function với function, rồi class modules gì gớm vậy. Em đọc không nắm được gì.
Bác cần lấy dữ liệu từ nhiều file csv/ 1 lần hay 1 file csv / 1 lần. Lấy dữ liệu ở sheet/ dòng/ cột nào? Lấy xong thì tính toán cái gì và ném kết quả vào chỗ nào?

Như này nha:
1. Khi nhấn vào nút Get thì tìm đến thư mục chứa các file csv và đọc hết các file csv có trong thư mục đó (chỉ tìm đến thư mục xong nhấn Cancel)
2. Trong thư mục csv, các file csv có cột BQ là cột speed
3. Cần tính toán độ dài qua công thức:
If (n <= 3000) Then
n = n + 1

If (n = 1) Then

len_total = a * 0.2
Else
If (n = 2) Then

len_total = len_total + a * 0.2
Else
If (len_total < len_total + a * 0.2) Then len_total = len_total + a * 0.2

4. Kết quả của len_total ném vào cột Total Length trong file xlsm

*** Vấn đề là cột BQ dữ liệu không có đến hết dòng cuối cùng, nên khi load csv thì báo lỗi.
Bạn thử với cột từ 1-18 thì chạy được, còn từ cột thứ 19 trở đi là lỗi
 
Upvote 0
Như này nha:
1. Khi nhấn vào nút Get thì tìm đến thư mục chứa các file csv và đọc hết các file csv có trong thư mục đó (chỉ tìm đến thư mục xong nhấn Cancel)
2. Trong thư mục csv, các file csv có cột BQ là cột speed
3. Cần tính toán độ dài qua công thức:


4. Kết quả của len_total ném vào cột Total Length trong file xlsm

*** Vấn đề là cột BQ dữ liệu không có đến hết dòng cuối cùng, nên khi load csv thì báo lỗi.
Bạn thử với cột từ 1-18 thì chạy được, còn từ cột thứ 19 trở đi là lỗi
Bạn có thể nêu rõ cụ thể từ đầu đc k? Bạn muốn lấy dữ liệu gì từ csv file sang sheet Results? Lấy cột nào của csv sag cột nào Result? Như thế có thể viết lại code cho bạn. Chứ như bạn nói, code của bạn bi lỗi + đọc lại code của bạn thì mệt lắm
 
Upvote 0
Như này nha:
1. Khi nhấn vào nút Get thì tìm đến thư mục chứa các file csv và đọc hết các file csv có trong thư mục đó (chỉ tìm đến thư mục xong nhấn Cancel)
Cái này hay à. Nhấn Cancel thì thực hiện lệnh, còn Open thì lại không.
Tôi chạy thử thì click chọn vào 1 file / Open thì code vẫn chạy...
2. Trong thư mục csv, các file csv có cột BQ là cột speed
3. Cần tính toán độ dài qua công thức:
...
4. Kết quả của len_total ném vào cột Total Length trong file xlsm
*** Vấn đề là cột BQ dữ liệu không có đến hết dòng cuối cùng, nên khi load csv thì báo lỗi.
Bạn thử với cột từ 1-18 thì chạy được, còn từ cột thứ 19 trở đi là lỗi
Thực ra là rất muốn bạn nêu yêu cầu của mình như nào để xem chứ ngồi đọc code của bạn thì chịu.
Vấn đề của bạn là:
Lấy dữ liệu từ folder/ các file csv/ sheet/ dòng/ cột nào? Lấy xong thì tính toán cái gì? Kết quả cho vào cell/ sheet/ file nào?
 
Upvote 0
Web KT

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

Back
Top Bottom