Hỗ trợ câu lệnh so sánh O2 và R2

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

Tình nghĩa giang hồ

Thanh sơn bất cải, lục thủy trường lưu
Tham gia
29/9/20
Bài viết
330
Được thích
429
Chào anh chị em có vấn đề này nhờ anh chị hỗ trợ giúp em.
Cột O2 của em có giá trị là: 19936770-
Cột R2 của em có giá trị là: 19936770-
Em đã thử hàm ISNUMBER cả O2 lẫn R2 thì là FALSE, tức là không phải kiểu số.

Vấn đề của em là so sánh
em thử =O2=R2 thì nó phải trả về TRUE mới đúng, nhưng nó lại là FALSE. Em không tìm ra lý do, nguyên nhân của vấn đề này.

Vấn đề chính em cần hỗ trợ là 1 câu lệnh VBA.
Em viết một câu lệnh VBA
Kiểu 1
If Right(Sheet2.Range("R2").Value, 20) = Right(Sheet2.Range("O2").Value, 20) Then
Kiểu 2
If Sheet2.Range("R2").Value = Sheet2.Range("O2").Value Then
Kiểu 3
If ABS(Sheet2.Range("R2").Value) = ABS(Sheet2.Range("O2").Value Then
.......................
Em thử nhiều cách viết nhưng do lỗi ở trên như em đã nói, nên viết VBA kiểu gì nó cũng lỗi.
Nhờ anh chị hỗ trợ tìm nguyên nhân lỗi này giúp em, và cho em xin một câu lệnh đúng cho trường hợp này ạ.
Em cảm ơn anh chị nhiều
 

File đính kèm

  • so sánh dữ liệu O2 và R2.xlsx
    126.8 KB · Đọc: 8
  • so sánh O2 và R2.jpg
    so sánh O2 và R2.jpg
    58 KB · Đọc: 16
Một cách làm khác ạ:
Mã:
Option Explicit
Public Function Number(ByVal sInputString As String) As Double
    Dim i As Integer
    Dim lFirstNumberPos As Long
    For i = 1 To Len(sInputString)
        If IsNumeric(Mid(sInputString, i, 1)) Then
            lFirstNumberPos = i
            Exit For
        End If
    Next i
    Number = Mid$(sInputString, lFirstNumberPos)
End Function

Sub test()
    Dim sheet As Worksheet
    Set sheet = ThisWorkbook.Worksheets("Data")
    MsgBox Number(sheet.Range("O2").Value) = Number(sheet.Range("O2").Value)
End Sub
 
Upvote 0
Vấn đề là O2 có mấy dấu phẩy.
Mã:
If Replace(Sheet2.Range("R2").Value, ",", "") = Replace(Sheet2.Range("O2").Value, ",", "") Then
Dạ em cảm ơn anh Thắng nhiều
Bài đã được tự động gộp:

Một cách làm khác ạ:
Mã:
Option Explicit
Public Function Number(ByVal sInputString As String) As Double
    Dim i As Integer
    Dim lFirstNumberPos As Long
    For i = 1 To Len(sInputString)
        If IsNumeric(Mid(sInputString, i, 1)) Then
            lFirstNumberPos = i
            Exit For
        End If
    Next i
    Number = Mid$(sInputString, lFirstNumberPos)
End Function

Sub test()
    Dim sheet As Worksheet
    Set sheet = ThisWorkbook.Worksheets("Data")
    MsgBox Number(sheet.Range("O2").Value) = Number(sheet.Range("O2").Value)
End Sub
Em cảm ơn chị Hoàng Nhật Phương nhé.
 
Upvote 0
Chịu thua cách làm ăn của thớt luôn.
Code test dữ liệu Sheet2. Mà sheet này thì trống trơn.
Sheet Data, twusc Sheet3 mới chứa dữ liệu.

@Thớt: muốn học viết VBA thì tối thiểu cũng phải học cách dùng cửa sổ Immediate.
Nếu dùng thì đã thấy chúng đâu có giống nhau

1671605086194.png
 
Upvote 0
Chịu thua cách làm ăn của thớt luôn.
Code test dữ liệu Sheet2. Mà sheet này thì trống trơn.
Sheet Data, twusc Sheet3 mới chứa dữ liệu.

@Thớt: muốn học viết VBA thì tối thiểu cũng phải học cách dùng cửa sổ Immediate.
Nếu dùng thì đã thấy chúng đâu có giống nhau

View attachment 284903
À xin lỗi anh, lỗi của em, do file thực tế của em là file khác, em copy lại file này cho gọn (file này là file giả định), để hỏi vấn đề thôi. File thiệt của em là Sheet2 đó anh.
Nhưng qua đây mới thấy sự tuyệt vời của GPE, các anh chị quá nhạy, dù em bị nhầm. Nhưng anh chị vẫn cho ra kết quả đúng, chính xác. Tuyệt vời là chỗ này.


@Thớt: muốn học viết VBA thì tối thiểu cũng phải học cách dùng cửa sổ Immediate.
Nếu dùng thì đã thấy chúng đâu có giống nhau

Em sẽ xem lại vấn đề này, cảm ơn anh đã nhắc nhở.
 
Upvote 0
Web KT

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

Back
Top Bottom