Trước khi gán xuống sheet thì xử lý nó trước nó đi anhChào các anh chị !!!!!
Em có code lấy dữ liệu, nhưng khi dữ liệu đập vào cột F và G thì không định dạng Text nên dùng Vlookup không ra.
Mà dữ liệu đập vào có cả Text và Number, mong các anh chị giúp đỡ.
Option Explicit
Sub LaySheetXuat()
Dim fd As Workbook, sd As Worksheet, sn As Worksheet, mn, lrd As Long, lrn As Long, i As Long, j As Long, k As Long, p As Long, ktts As Long, tensheet As Long
Dim chonFile, openfile
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set fd = ThisWorkbook
'Mo thuoc tinh File Open
chonFile = Application.GetOpenFilename(Title:="Chon file du lieu can lay", filefilter:="exel file(*.xls*),*.xls*", MultiSelect:=True)
On Error Resume Next
For i = 1 To UBound(chonFile)
On Error GoTo 0
If i = 0 Then Exit Sub
Set openfile = Workbooks.Open(chonFile(i), False)
With openfile
For ktts = 1 To Sheets.Count 'Kiem tra xem file co ten sheets can lay du lieu khong
If Sheets(ktts).Name = "Xuat" Then
tensheet = tensheet + 1
Exit For
End If
Next ktts
If tensheet = 0 Then 'Neu file khong co ten sheet nao giong thi dong file và thoát khoi Sub
openfile.Close
MsgBox "Khong co sheets nào giông tên sheet cân lay du lieu, vui long chon lai file khac"
GoTo thoat
End If
For j = 1 To fd.Sheets.Count
For p = 1 To .Sheets.Count
If fd.Sheets(j).Name = .Sheets(p).Name Then 'Nêu ten file nguon giong ten file dich thi lay du lieu
Set sd = fd.Sheets(j): lrd = sd.Cells(Rows.Count, 1).End(xlUp).Row
Set sn = openfile.Sheets(p): lrn = sn.Cells(Rows.Count, 1).End(xlUp).Row
mn = sn.Range("A6:P" & lrn): sd.Range("A" & lrd + 1).Resize(lrn - 4, 16) = mn
sd.Range("A" & lrd + 1).Resize(lrn - 4, 16).Borders.LineStyle = True
j = j + 1
End If
Next p
Next j
End With
openfile.Close
thoat:
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Nếu em gửi cho anh 1 cái ảnh. Xong bảo anh khám bệnh anh có chịu khám không?Bạn chỉ mình với, code đây:
Mình nhận ra code này của mình.Nếu em gửi cho anh 1 cái ảnh. Xong bảo anh khám bệnh anh có chịu khám không?
Thế anh vào chữa đi kìa. Gặp con ruột thì thớt mở cờ được rồi.Mình nhận ra code này của mình.
Dữ liệu người ta nâng như nâng trứng mà đem đập vào cột thì hỏng hết dữ liệu còn gì bạn ơi.Mà dữ liệu đập vào
Thấy có bạn vác đi đập vào cột này, cột kia đang xót hết cả ruột đây này.con ruột
Không có file thì mai lại tiếp tục hàn huyên nhỉ.
Nhất định không đưa file để thử thì đành dừng ở đây vậy.không được:
sao em thử thêm đoạn code này mà không được:
Mã:sd.Range("F:G" & lrd + 1) = "'" & sd.Range("F:G" & lrd + 1) sd.Range("F:G" & lrd + 1).Resize(r, 2).NumberFormat = "@"
Range("F:G" & lrd + 1)
Range("F" & lrd + 1 & ":G" & lrd + 1)
Thấy nói là phải định dạng vùng đích trước khi điền dữ liệu nguồn, cái này không chắc lắm, hình như là thế thì phải, lâu rồi quênChạy thấy đúng ý rồi anh ơi, nhưng không biết vận dụng anh @CHAOQUAY ơi.
sd.Range("A" & lrd + 1).Resize(lrn - 4, 16).NumberFormat = "@"
mn = sn.Range("A6:P" & lrn): sd.Range("A" & lrd + 1).Resize(lrn - 4, 16) = mn
Do không chịu gửi file nên cũng không viết code, chỉ gợi ý thôi:như If iSnumeric(mảng F:G ) = True Then Mảng(F:G) = cStr( mảng F:G)
Có ai bảo phải đưa dữ liệu thật đâu mà mấy ngày không tạo được file giả lập.vì file là dữ liệu cty,
Phần canh giữa tự tìm hiểu nhé vì mình thấy đã là Text thì nằm bên trái mới hợp lý.Cám ơn anh @Hoàng Tuấn 868 !!!
File đây anh. Mong anh chỉnh code cho cột F và Cột G là Text, vì dữ liệu gốc có cả số và Text. và canh giữa nha anh.
Mình không động gì đến Border cả, bên máy mình không có hai hiện tượng bạn mô tả.Cám ơn anh @Hoàng Tuấn 868 nhiều !!!
Nhưng sao code Border tới dòng 211, và dòng 211 có chữ #NA vậy anh??
Cái này để mình xem sao.Dữ liệu tới dòng 75 thôi anh, mà Border tới dòng 211, và dòng 211 có chữ #NA,
Vậy bạn chỉ cần trên thanh công cụ hiện là Text hay dữ liệu hai cột là dạng Text vậy.mà sao trên thanh công cụ Home, nó khong hiện là Text mà hiên General anh (cột F và G)
Bạn kiểm tra lại nhé.là do fileNguon có công thức tới dòng 211, đã xóa công thức, nhưng dòng cuối vẫn có chữ #NA, mong anh giúp coi lại file nguồn
Đây là do bạn lập file không giống với file gốc của code này, tiêu đề file gốc có 5 dòng, còn bạn làm file giả lập lại bớt đi một dòng còn 4 nên mới bị #NA ở dòng cuối.nhưng dòng cuối vẫn có chữ #NA, mong anh giúp coi lại file nguồn
. . . . . . . . . . . . . . .. . .định dạng #,##0.00.
For j = 1 To fd.Sheets.Count
For p = 1 To .Sheets.Count
If fd.Sheets(j).Name = .Sheets(p).Name Then 'Nêu ten file nguon giong ten file dich thi lay du lieu
Set sd = fd.Sheets(j): lrd = sd.Cells(Rows.Count, 1).End(xlUp).Row
Set sn = openfile.Sheets(p): lrn = sn.Cells(Rows.Count, 1).End(xlUp).Row
mn = sn.Range("A6:P" & lrn): sd.Range("A" & lrd + 1).Resize(lrn - 5, 16) = mn
mnp = sn.Range("F6:G" & lrn)
ReDim mnp1(1 To UBound(mnp, 1), 1 To 2)
For q1 = 1 To 2
For q = 1 To UBound(mnp, 1)
If mn(q, 3) <> "" Then ' them
mnp1(q, q1) = mnp(q, q1)
End If ' them
Next q
Next q1
sd.Range("F5").Resize(q - 1, 2) = mnp1
sd.Range("A" & lrd + 1).Resize(lrn - 5, 16).Borders.LineStyle = True
lrd = sd.Cells(Rows.Count, 1).End(xlUp).Row
sd.Range("I5:J" & lrd).NumberFormat = "#,##0.00"
j = j + 1
End If
Next p
Next j
End With