Code VBA Bị Lỗi khi tên dữ liệu là tên của 1 tháng

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Văn Toàn 1996

Thành viên hoạt động
Tham gia
5/6/23
Bài viết
102
Được thích
22
Em chào các anh chị diễn đàn ! Em đang học tập tành VBA nhờ anh chị giúp em câu hỏi sau
Em có dùng 2 đoạn code bên dưới nhưng kết quả khi xuất ra đều sai khi Dữ liệu data gốc có tên của 1 tháng - 1 con số
Ví dụ tại ô B3 có dữ liệu là "April-1" thì code xuất ra là "45017" vậy giờ làm cách nào để xuất ra vẫn là tên gốc là "April-1" . Em xin cảm ơn !

Mã:
Sub Code1()
     Range("D2:D14") = "=IF(RC[-2]="""","""",RC[-2])"
     Range("D2:D14").Value = Range("D2:D14").Value
End Sub


Sub Code2()
On Error Resume Next
Dim sArr(), dArr(), Dk1 As String, I As Long, K As Long, R As Long
sArr = Range("B2:B100").Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
For I = 1 To R
    If sArr(I, 1) <> "" Then
        K = K + 1
            dArr(K, 1) = sArr(I, 1)
    End If
Next I
Range("D2:D100").ClearContents
Range("D2").Resize(K, 1) = dArr
End Sub

1687107786613.png
 

File đính kèm

  • VBA Loi.xlsm
    17 KB · Đọc: 12
PHP:
Sub Code2()
On Error Resume Next
Dim sArr(), dArr(), Dk1 As String, I As Long, K As Long, R As Long
sArr = Range("B2:B100").Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
For I = 1 To R
    If sArr(I, 1) <> "" Then
        K = K + 1
        If Isdate(sArr(I,1)) Then
            dArr(K, 1) =Format(sArr(I, 1),"MM/DD/yyyy")
        Else
            dArr(K, 1) = "GPE.COM"
        End if
    End If
Next I
Range("D2:D" & 3*R).ClearContents
Range("D2").Resize(K, 1) = dArr
End Sub
 
Upvote 0
Sao bạn không viết là
Mã:
Range("D2:D14").value=Range("B2:B14").value
?

Mình đã sử dụng nó vẫn bị Bạn không tin test thử xem
Bài đã được tự động gộp:

PHP:
Sub Code2()
On Error Resume Next
Dim sArr(), dArr(), Dk1 As String, I As Long, K As Long, R As Long
sArr = Range("B2:B100").Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
For I = 1 To R
    If sArr(I, 1) <> "" Then
        K = K + 1
        If Isdate(sArr(I,1)) Then
            dArr(K, 1) =Format(sArr(I, 1),"MM/DD/yyyy")
        Else
            dArr(K, 1) = "GPE.COM"
        End if
    End If
Next I
Range("D2:D" & 3*R).ClearContents
Range("D2").Resize(K, 1) = dArr
End Sub
Cảm ơn anh. Kết quả nó vũng y vậy . April-1 nó xuất ra lại thành 45017

1687135030641.png
 
Upvote 0
Em chào các anh chị diễn đàn ! Em đang học tập tành VBA nhờ anh chị giúp em câu hỏi sau
Em có dùng 2 đoạn code bên dưới nhưng kết quả khi xuất ra đều sai khi Dữ liệu data gốc có tên của 1 tháng - 1 con số
Ví dụ tại ô B3 có dữ liệu là "April-1" thì code xuất ra là "45017" vậy giờ làm cách nào để xuất ra vẫn là tên gốc là "April-1" . Em xin cảm ơn !

Mã:
Sub Code1()
     Range("D2:D14") = "=IF(RC[-2]="""","""",RC[-2])"
     Range("D2:D14").Value = Range("D2:D14").Value
End Sub


Sub Code2()
On Error Resume Next
Dim sArr(), dArr(), Dk1 As String, I As Long, K As Long, R As Long
sArr = Range("B2:B100").Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
For I = 1 To R
    If sArr(I, 1) <> "" Then
        K = K + 1
            dArr(K, 1) = sArr(I, 1)
    End If
Next I
Range("D2:D100").ClearContents
Range("D2").Resize(K, 1) = dArr
End Sub

View attachment 291597
Bạn thử chạy lại cod2 xem đúng ý chưa nhé.
 

File đính kèm

  • VBA Loi.xlsm
    18.3 KB · Đọc: 7
Upvote 0
Sao bạn không viết là:

Mã:
Range("D2:D14").value=Range("B2:B14").text

Hahaha ...
 
Upvote 0
. . . . .
Cảm ơn anh. Kết quả nó vũng y vậy . April-1 nó xuất ra lại thành 45017
Vậy là máy bạn có ma rồi;
File của bạn & macro đó đưa ra kết quả không thể tốt hơn, trên máy của mình.!

DATA GỐC
AAA-1GPE.COM
1-Apr​
4/1/2023​
2-Apr​
4/2/2023​
1-Aug​
8/1/2023​
2-Aug​
8/2/2023​
BBBGPE.COM
CCC-2GPE.COM
CCC-3GPE.COM
CCCGPE.COM
AAAGPE.COM
JulyGPE.COM
1-Jul​
7/1/2023​
2-Jul​
7/2/2023​
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy là máy bạn có ma rồi;
File của bạn & macro đó đưa ra kết quả không thể tốt hơn, trên máy của mình.!

DATA GỐC
AAA-1GPE.COM
1-Apr​
4/1/2023​
2-Apr​
4/2/2023​
1-Aug​
8/1/2023​
2-Aug​
8/2/2023​
BBBGPE.COM
CCC-2GPE.COM
CCC-3GPE.COM
CCCGPE.COM
AAAGPE.COM
JulyGPE.COM
1-Jul​
7/1/2023​
2-Jul​
7/2/2023​
bạn hiểu sai ý của tôi. Tôi muốn cột dữ liệu cột D nó giống cột B ( Giống như copy cột B dán sang cột D )mà không hiểu vì sao April-1 nó lại thành 36982
Bài đã được tự động gộp:

Sao bạn không viết là:

Mã:
Range("D2:D14").value=Range("B2:B14").text

Hahaha ...
Code không chạy được bạn ơi
 
Upvote 0
Bạn thử thêm cái này.
Mã:
Sheet1.Range("B2:B14").Copy Sheet1.Range("D2")
Đúng rồi. Thớt chỉ bị B đủ kiểu dữ liệu mạc định dạng tùm lum cho nên cóp dữ liệu sang D không hiện ra giống B.
Chỉ cần dùng cách copy đơn giản (cóp cả định dạng) là thấy giống nhau. À rây à rọt vứt đi!
 
Upvote 0
Cứ mỗi lần thêm một thứ thế này thì bao giờ mới hết. Ví dụ không giống dữ liệu thực thì nó vậy đấy.
bạn đọc kỷ lại bài 1 mình có ví dụ 2 đoạn code của mình đều lấy Value. Nhưng không hiểu sao April-1 nó xuất ra lại thành 45017
1687233796061.png
 
Upvote 0
bạn đọc kỷ lại bài 1 mình có ví dụ 2 đoạn code của mình đều lấy Value. Nhưng không hiểu sao April-1 nó xuất ra lại thành 45017
View attachment 291641
Mình không xem code của bạn làm gì, chỉ cần kết quả cuối đáp ứng yêu cầu là đủ, mỗi tội yêu cầu của bạn mỗi bài lại thò ra thêm một điều kiện nên khó ai kiên nhẫn theo được.
 
Upvote 0
Mình không xem code của bạn làm gì, chỉ cần kết quả cuối đáp ứng yêu cầu là đủ, mỗi tội yêu cầu của bạn mỗi bài lại thò ra thêm một điều kiện nên khó ai kiên nhẫn theo được.
45017 là so với ngày 1/1/1900 đấy.
....

Rồi, 2 bạn gặp người quen của chúng tôi rồi. Chúc mừng :p
 
Upvote 0
Web KT

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

Back
Top Bottom