Code VBA định dạng dữ liệu cột F và G là Text và canh giữa.

Liên hệ QC

DMQ

Thành viên dốt
Tham gia
21/3/12
Bài viết
713
Được thích
54
Giới tính
Nam
Chà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 đỡ.
 
Chà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 đỡ.
Trước khi gán xuống sheet thì xử lý nó trước nó đi anh
 
Upvote 0
Bạn chỉ mình với, code đây:

Mã:
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
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
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 = "@"
 
Upvote 0
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 = "@"
Mã:
Range("F:G" & lrd + 1)
Mã:
Range("F" & lrd + 1 & ":G" & lrd + 1)

Thử sửa trên thành dưới xem sao
 
  • Yêu thích
Reactions: DMQ
Upvote 0
Code thêm dấu nháy đơn không được anh @CHAOQUAY ơi
 
Upvote 0
Mã:
sd.Range("F" & lrd + 1 & ":G" & lrd + 1).Resize(r, 1).NumberFormat = "@"
Code trên đã chuyển Text, nhưng các số 001,002,003,..v..vv thì lại biến thành 1,2,3.vv... mất các số không anh @CHAOQUAY ơi, mong anh giúp.
 
Upvote 0
Mã:
sd.Range("F" & lrd + 1 & ":G" & lrd + 1).Resize(r, 1).NumberFormat = "@"
Code trên đã chuyển Text, nhưng các số 001,002,003,..v..vv thì lại biến thành 1,2,3.vv... mất các số không anh @CHAOQUAY ơi, mong anh giúp.
Bạn chạy thử file dưới đây rồi tính tiếp
 

File đính kèm

  • test_textRng.xlsb
    13.4 KB · Đọc: 6
Upvote 0
Chạy thấy đúng ý rồi anh ơi, nhưng không biết vận dụng anh @CHAOQUAY ơi.
 
Upvote 0
Chạy thấy đúng ý rồi anh ơi, nhưng không biết vận dụng anh @CHAOQUAY ơi.
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ên

Trong bài 3, bạn thử thêm dòng này
Mã:
sd.Range("A" & lrd + 1).Resize(lrn - 4, 16).NumberFormat = "@"
Phía trên dòng này
Mã:
mn = sn.Range("A6:P" & lrn): sd.Range("A" & lrd + 1).Resize(lrn - 4, 16) = mn
Rồi chạy thử xem sao
 
Upvote 0
dùng "@" thì nó định dạng Text, nhưng các số có số o đầu mất hết, như các mã số 041584,07712,010457 ... thành 41584,7712,10457.... anh @CHAOQUAY
Bài đã được tự động gộp:

em thấy có cách thêm dấu ' trước số thành chuỗi, hay convert thành String
 
Upvote 0
dùng "@" thì nó định dạng Text, nhưng các số có số o đầu mất hết, như các mã số 041584,07712,010457 ... thành 41584,7712,10457.... anh @CHAOQUAY
Bài đã được tự động gộp:

em thấy có cách thêm dấu ' trước số thành chuỗi, hay convert thành String
Tức là đã thử rồi?
 
Upvote 0
Web KT

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

Back
Top Bottom