Xin code VBA thay thế hàm Vlookup

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

Thanh Binh111

Thành viên chính thức
Tham gia
28/11/20
Bài viết
59
Được thích
16
Xin chào mọi người!

Mình có bài toán này nhờ mọi người giúp đỡ:

-Dữ liệu ban đầu của mình là bảng bao gồm các cột A B C (rất nhiều dòng), và thêm 1 BẢNG CHUYỂN ĐỔI ngôn ngữ

-Nhu cầu của mình là: xin đoạn code VBA gán vào nút bấm, để khi bấm nút bấm Tiếng Việt thì dữ liệu cột B và C sẽ hiển thị theo ngôn ngữ Tiếng Việt, khi bấm nút bấm Tiếng Trung thì dữ liệu cột B và C sẽ hiển thị theo ngôn ngữ Tiếng Trung, dữ liệu sau khi bấm dán đè lên cột B và C chứ k dán ở một vùng khác.

Xin cảm ơn rất nhiều!1698664694893.png
 

File đính kèm

  • Xin code VBA Vlookup.xlsb
    35.9 KB · Đọc: 9
Phải là VBA hả bạn. Bạn thử record macro theo công thức mà bạn đang làm cũng là 1 cách ấy
 
Upvote 0
Phải là VBA hả bạn. Bạn thử record macro theo công thức mà bạn đang làm cũng là 1 cách ấy
Vâng, tại dữ liệu mình lớn, nhiều dòng và liên quan đến lưu trình tính toán đã viết sẵn VBA, nên muốn xin code VBA để chạy cho thống nhất bạn ạ
Bài đã được tự động gộp:

Cái này là biểu dữ liệu hiển thị cho người dùng xem, bao gồm người Việt và Trung, nên mình muốn tự động hóa thành nút bấm để cho người dùng dễ dàng sử dụng ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Vâng, tại dữ liệu mình lớn, nhiều dòng và liên quan đến lưu trình tính toán đã viết sẵn VBA, nên muốn xin code VBA để chạy cho thống nhất bạn ạ
Bài đã được tự động gộp:

Cái này là biểu dữ liệu hiển thị cho người dùng xem, bao gồm người Việt và Trung, nên mình muốn tự động hóa thành nút bấm để cho người dùng dễ dàng sử dụng ạ
Bạn tham khảo #1 xem nó ra đúng ý bạn không
 
Upvote 0
Bạn chuột phải vào từng nút bấm, chọn "Assign macro", rồi chọn macro "chuyendoi" nhé
PHP:
Option Explicit
Sub chuyendoi()
Dim lr&, i&, rng, dic As Object
Dim ngonngu As String, ky As String, im As String
Set dic = CreateObject("Scripting.Dictionary")
rng = Range("G2").CurrentRegion.Value
ngonngu = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Caption ' code dung chung cho 2 nut: "ngonngu" de trich xuat caption ra
For i = 3 To UBound(rng)
    If ngonngu = "Tieng Viet" Then
        ky = rng(i, 3): im = rng(i, 2) ' neu "tieng Viet" thi key = tieng Trung, item la tieng Viet
    Else
        ky = rng(i, 2): im = rng(i, 3) ' nguoc lai
    End If
    If Not dic.exists(ky) Then dic.Add ky, im ' tao dictionary
Next
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("B2:C" & lr).Value
For i = 1 To UBound(rng)
    If dic.exists(rng(i, 1)) Then rng(i, 1) = dic(rng(i, 1)) ' thay the cot B voi ngon ngu tuong ung
    If dic.exists(rng(i, 2)) Then rng(i, 2) = dic(rng(i, 2)) ' thay the cot C voi ngon ngu tuong ung
Next
Range("B2").Resize(UBound(rng), 2).Value = rng
Set dic = Nothing
End Sub
 

File đính kèm

  • Xin code VBA Vlookup.xlsb
    72.4 KB · Đọc: 19
Lần chỉnh sửa cuối:
Upvote 0
Thêm 1 cách khác tham khảo. Tạo CommandButton trong sheet. Sau mỗi lần bấm CommandButton sẽ thay đổi ngôn ngữ
Mã:
Private Sub CommandButton1_Click()
 Dim Dic As Object, i&, Data(), j&, sArr()
    If CommandButton1.Caption = "Tieng Viet" Then
        CommandButton1.Caption = "Tieng Trung"
    Else
        CommandButton1.Caption = "Tieng Viet"
    End If
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("Sheet1")
        Data = .Range("H3:I12").Value
        For j = 1 To UBound(Data, 2)
            For i = 1 To UBound(Data)
                If j = 1 Then Dic("V#" & Data(i, 1)) = Data(i, 2) Else Dic("C#" & Data(i, 2)) = Data(i, 1)
            Next
        Next
        sArr = .Range("B2:C21").Value
        For i = 1 To UBound(sArr)
            For j = 1 To 2
                If CommandButton1.Caption = "Tieng Viet" Then
                    If Dic.exists("V#" & sArr(i, j)) Then sArr(i, j) = Dic.Item("V#" & sArr(i, j))
                Else
                    If Dic.exists("C#" & sArr(i, j)) Then sArr(i, j) = Dic.Item("C#" & sArr(i, j))
                End If
            Next
        Next
        .Range("B2").Resize(UBound(sArr), 2).Value = sArr
    End With
End Sub
 

File đính kèm

  • Xin code VBA Vlookup.xlsb
    49 KB · Đọc: 18
Lần chỉnh sửa cuối:
Upvote 0
Bạn chuột phải vào từng nút bấm, chọn "Assign macro", rồi chọn macro "chuyendoi" nhé
PHP:
Option Explicit
Sub chuyendoi()
Dim lr&, i&, rng, dic As Object
Dim ngonngu As String, ky As String, im As String
Set dic = CreateObject("Scripting.Dictionary")
rng = Range("G2").CurrentRegion.Value
ngonngu = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Caption ' code dung chung cho 2 nut: "ngonngu" de trich xuat caption ra
For i = 3 To UBound(rng)
    If ngonngu = "Tieng Viet" Then
        ky = rng(i, 3): im = rng(i, 2) ' neu "tieng Viet" thi key = tieng Trung, item la tieng Viet
    Else
        ky = rng(i, 2): im = rng(i, 3) ' nguoc lai
    End If
    If Not dic.exists(ky) Then dic.Add ky, im ' tao dictionary
Next
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("B2:C" & lr).Value
For i = 1 To UBound(rng)
    If dic.exists(rng(i, 1)) Then rng(i, 1) = dic(rng(i, 1)) ' thay the cot B voi ngon ngu tuong ung
    If dic.exists(rng(i, 2)) Then rng(i, 2) = dic(rng(i, 2)) ' thay the cot C voi ngon ngu tuong ung
Next
Range("B2").Resize(UBound(rng), 2).Value = rng
Set dic = Nothing
End Sub
Xin chân thành cảm ơn sự hỗ trợ của bác ạ!
Bài đã được tự động gộp:

Thêm 1 cách khác tham khảo. Tạo CommandButton trong sheet. Sau mỗi lần bấm CommandButton sẽ thay đổi ngôn ngữ
Mã:
Private Sub CommandButton1_Click()
 Dim Dic As Object, i&, Data(), j&, sArr()
    If CommandButton1.Caption = "Tieng Viet" Then
        CommandButton1.Caption = "Tieng Trung"
    Else
        CommandButton1.Caption = "Tieng Viet"
    End If
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("Sheet1")
        Data = .Range("H3:I12").Value
        For j = 1 To UBound(Data, 2)
            For i = 1 To UBound(Data)
                If j = 1 Then Dic("V#" & Data(i, 1)) = Data(i, 2) Else Dic("C#" & Data(i, 2)) = Data(i, 1)
            Next
        Next
        sArr = .Range("B2:C21").Value
        For i = 1 To UBound(sArr)
            For j = 1 To 2
                If CommandButton1.Caption = "Tieng Viet" Then
                    If Dic.exists("V#" & sArr(i, j)) Then sArr(i, j) = Dic.Item("V#" & sArr(i, j))
                Else
                    If Dic.exists("C#" & sArr(i, j)) Then sArr(i, j) = Dic.Item("C#" & sArr(i, j))
                End If
            Next
        Next
        .Range("B2").Resize(UBound(sArr), 2).Value = sArr
    End With
End Sub
Vâng, xin cảm ơn bác đã hướng dẫn ạ!
 
Upvote 0
Web KT

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

Back
Top Bottom