Khi tham chiếu lấy luôn cả comment

Liên hệ QC

tuandtd2008

Thành viên mới
Tham gia
19/8/08
Bài viết
42
Được thích
35
Khi ta tham chiếu tới cell nào đó ta lấy luôn cả comment cell đó luôn thì phải làm sao mấy pác?
Ví dụ khi ta dùng hàm VLOOKUP để lấy giá trị của một cell nào đó ta lấy luôn cả comment cell đó luôn.
 
Khi ta tham chiếu tới cell nào đó ta lấy luôn cả comment cell đó luôn thì phải làm sao mấy pác?
Ví dụ khi ta dùng hàm VLOOKUP để lấy giá trị của một cell nào đó ta lấy luôn cả comment cell đó luôn.
Tôi nghĩ dùng hàm thông thường của Excel sẽ không có chiêu này (cùng lắm chỉ có thể lấy những gì đã ghi trong Comment ra nơi khác)... Còn cái bạn muốn thì chỉ có thể dùng VBA (dựa trên cơ sở PasteSpecial\Comments)
 
Khi ta tham chiếu tới cell nào đó ta lấy luôn cả comment cell đó luôn thì phải làm sao mấy pác?
Ví dụ khi ta dùng hàm VLOOKUP để lấy giá trị của một cell nào đó ta lấy luôn cả comment cell đó luôn.

Không được bạn ạ.

Chỉ có thể dùng VBA thôi

Thân!
 
Cám ơn các pac rất nhiều. Có lẻ không đượv thiệt, nhưng nếu dùng VBA thì pác nào viết được giúp em với. Kiến thức VBA của em còn hạn chế lắm. Cám ơn
 
Cám ơn các pac rất nhiều. Có lẻ không đượv thiệt, nhưng nếu dùng VBA thì pác nào viết được giúp em với. Kiến thức VBA của em còn hạn chế lắm. Cám ơn

Giá trị tìm kiếm : Bạn muốn tìm kiếm theo giá trị của Cell hay theo Comment ??
Giá trị nhận được : Bạn muốn lấy giá trị của Cell tìm được hay là lấy giá trị comment ??

Thân!
 
Cám ơn các pac rất nhiều. Có lẻ không đượv thiệt, nhưng nếu dùng VBA thì pác nào viết được giúp em với. Kiến thức VBA của em còn hạn chế lắm. Cám ơn
Thử file này xem... File đơn giản thôi nhưng bạn có thể phát triển thêm
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  With Target
    If .Column = 3 Then
      If .Value = "" Then .Comment.Delete: Exit Sub
      .AddComment
      .Comment.Text .DirectPrecedents.Comment.Text
    End If
  End With
End Sub
Khi bạn gõ công thức vào cột C thì lập tức nó se lấy Comment của cell liên quan (trong công thức) gắn vào cell vừa gõ
File còn rất nhiều thiếu sót, xin các cao thủ cải thiện giúp!
 

File đính kèm

  • Com_Test_01.xls
    22.5 KB · Đọc: 71
Lần chỉnh sửa cuối:
có gì đâu mà phải dùng VBA nhỉ , bạn chỉ việc tạo thêm 1 cột khác giống y cột bạn cần lấy dữ liệu sau đó chọn cột mới tạo rồi delete comment ,rồi dùng hàm vlookup lấy dữ liệu từ cột mới đó thế là xong,vừa giữ được comment cũ , vừa vlookup không bị dính comment :D
 
có gì đâu mà phải dùng VBA nhỉ , bạn chỉ việc tạo thêm 1 cột khác giống y cột bạn cần lấy dữ liệu sau đó chọn cột mới tạo rồi delete comment ,rồi dùng hàm vlookup lấy dữ liệu từ cột mới đó thế là xong,vừa giữ được comment cũ , vừa vlookup không bị dính comment :D
Chưa hiểu lắm! Bạn có thể làm 1 file đưa lên đây không?
 
Ý mình nói ở trong file đính kèm ( lấy luôn cả giá trị và comment của cell tham chiếu).
Cám ơn các bạn!
 

File đính kèm

  • lay luon ca comment.xls
    17.5 KB · Đọc: 61

File đính kèm

  • VlookUp-comment.xls
    36.5 KB · Đọc: 152
Ý mình nói ở trong file đính kèm ( lấy luôn cả giá trị và comment của cell tham chiếu).
Cám ơn các bạn!

Bạn xem thử nhé :

PHP:
Function LookupCom(Lookup_Value As String, Lookup_Array As Range, Value_Array As Range, Optional Range_Lookup As Boolean = False, Optional Comm As Boolean = False) As Variant
    On Error Resume Next
    Dim i As Long
    If Lookup_Array.Columns.Count <> 1 Then Exit Function
    If Value_Array.Columns.Count <> 1 Then Exit Function
    i = WorksheetFunction.Match(Lookup_Value, Lookup_Array, Range_Lookup)
    If Err.Number <> 0 Then Exit Function
        If Comm = False Then
            LookupCom = Value_Array(i)
        Else
            LookupCom = Value_Array.Cells(i, 1).Comment.Text
        End If
End Function
Hàm này chỉ lấy được hoặc là giá trị của Cell tìm được, hoặc là Comment của Cell tìm được.
Nếu muốn đồng thời cả hai (Giá trị + Comment) thì chỉ cần biến đổi xíu là được.


Còn nếu muốn gán luôn Comment của Cell tìm được vào Cell hiện tại thì dùng hàm không được bạn ạ, lại phải dùng Sub thôi. (Như bác ThuNghi chẳng hạn)
Thân!
 

File đính kèm

  • Lay Comment.rar
    9.4 KB · Đọc: 75
Lần chỉnh sửa cuối:
Ý mình đúng như bạn ThuNghi trả lời nhưng làm cách nào vậy, mong bạn chỉ giúp.
Cám ơn!

Cách làm của bạn Mr Okebab mình thấy cũng rất hay nhưng khi comment có hình anh thì truy vấn không có hình ảnh. Vậy có cách nào để xuất hiện hình ảnh không vậy bạn?
 
Chỉnh sửa lần cuối bởi điều hành viên:
em cũng cùng câu hỏi với bạn chủ post, các bác có hướng dẫn cụ thể giúp em với ạ :(
Bài đã được tự động gộp:

Thử file này xem... File đơn giản thôi nhưng bạn có thể phát triển thêm
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  With Target
    If .Column = 3 Then
      If .Value = "" Then .Comment.Delete: Exit Sub
      .AddComment
      .Comment.Text .DirectPrecedents.Comment.Text
    End If
  End With
End Sub
Khi bạn gõ công thức vào cột C thì lập tức nó se lấy Comment của cell liên quan (trong công thức) gắn vào cell vừa gõ
File còn rất nhiều thiếu sót, xin các cao thủ cải thiện giúp!
anh có thể giúp em tham chiếu ô có kèm cả comment với được ko ạ
 
Lần chỉnh sửa cuối:
em cũng cùng câu hỏi với bạn chủ post, các bác có hướng dẫn cụ thể giúp em với ạ :(
Bài đã được tự động gộp:


anh có thể giúp em tham chiếu ô có kèm cả comment với được ko ạ
Bạn đưa file của bạn lên đây, tôi sẽ làm trực tiếp vào đó luôn
 
anh có thể giúp em tham chiếu ô có kèm cả comment với được ko ạ

Năm 2020 rồi hàm nào cũng có thể viết được, bạn có thể thử hàm dưới đây.
Hàm có thể copy những gì có ở ô tìm thấy gồm comment, định dạng, ...

Sử dụng:
=S_VLOOKUP(<Giá trị> , <Vùng cột duy nhất> , <Trả kết quả bắt đầu từ ô duy nhất + vị trí tìm thấy>, <so khớp>, <Lấy comment>, <Lấy định dạng>)

Ví dụ:
=S_VLOOKUP(1,A1:A1000,A1,0,TRUE,TRUE)

Bạn kiểm tra chạy hàm hoàn chỉnh không bị lỗi, không bị ngắc tiến trình Excel thì hãy sử dụng.


Tôi sẽ sớm có một bài viết để thực hiện nhiều hàm hơn với kĩ thuật code này.
---------------------------------------------------
Copy code vào một module và lưu file ở dạng xlsm, xlsb
JavaScript:
Option Explicit

#If VBA7 Then
  Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal HWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As LongPtr, ByVal lpTimerFunc As LongPtr) As Long
  Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal HWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
#Else
  Private Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
  Private Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
#End If

'///////////////////////////////////////////////////////
#If Win64 Then
  Private gTimerID As LongPtr, gTimerID2 As LongPtr
#Else
  Private gTimerID As Long, gTimerID2 As Long
#End If
'///////////////////////////////////////////////////////
Private VLOOKUP_OArgs(), VLOOKUP_OIndex As Integer

Function S_VLOOKUP(ByVal Look_value As Variant, _
                   ByVal table_Array As Excel.Range, _
                   ByVal table_index As Excel.Range, _
            Optional ByVal range_look As Boolean, _
            Optional ByVal CopyComment As Boolean, _
            Optional ByVal Formatting As Boolean, _
            Optional ByVal GetFormula As Boolean) As Variant
  On Error Resume Next
  KillTimer 0&, gTimerID: gTimerID = 0
  '-----------------------------------------------
  Set table_Array = table_Array.Parent.Range(table_Array.Address)
  Set table_index = table_index.Parent.Range(table_index.Address)(1, 1)
  Dim R As Excel.Range, Args
  Dim I As Long
  I = Application.WorksheetFunction.Match(Look_value, table_Array, range_look)
  If I > 0 Then
    Set R = table_index(I, 1)
    If GetFormula Then S_VLOOKUP = R.Formula Else S_VLOOKUP = R.Value
  Else
    S_VLOOKUP = "#N/A"
  End If
  '-----------------------------------------------
  Dim UB As Integer, K As Integer
  '-----------------------------------------------
  UB = UBound(VLOOKUP_OArgs, 2): K = UB
  K = K + 1
  ReDim Preserve VLOOKUP_OArgs(1 To K)
  VLOOKUP_OArgs(K) = Array(Application.Caller, R, CopyComment, Formatting)
Work:
  gTimerID = SetTimer(0&, 0&, 1, AddressOf S_VLOOKUP_callback)
End Function
'///////////////////////////////////////////////////////
Private Sub S_VLOOKUP_callback()
  On Error Resume Next
  Call KillTimer(0&, gTimerID): gTimerID = 0
  Call KillTimer(0&, gTimerID2): gTimerID2 = 0
  On Error GoTo 0
  '----------------------------------
  Dim UB As Integer
  UB = UBound(VLOOKUP_OArgs)
  If UB > 0 Then
    VLOOKUP_OIndex = VLOOKUP_OIndex + 1
    '-------------------------------------------
    Dim Args
    Args = VLOOKUP_OArgs(VLOOKUP_OIndex)
    If Not Args(1) Is Nothing Then
      If Args(2) Then CopyComment Args(1), Args(0)
      If Args(3) Then CopyFormat Args(1), Args(0)
    Else
      If Args(2) Then Args(0).ClearComments
      If Args(3) Then Call ClearFormat(Args(0))
    End If
    '-------------------------------------------
    If VLOOKUP_OIndex >= UB Then
      Erase VLOOKUP_OArgs: VLOOKUP_OIndex = 0
    Else
      gTimerID = SetTimer(0&, 0&, 1, AddressOf S_VLOOKUP_callback2)
    End If
  End If
End Sub
Private Sub S_VLOOKUP_callback2()
  S_VLOOKUP_callback
End Sub

'///////////////////////////////////////////////////////
Sub CopyComment(ByVal frRange As Range, ByVal toRange As Range)
  On Error Resume Next
  If frRange Is Nothing Or toRange Is Nothing Then Exit Sub
  Set frRange = frRange.Parent.Range(frRange.Address)(1, 1)
  Set toRange = toRange.Parent.Range(toRange.Address)(1, 1)
  If frRange.Comment Is Nothing Then Exit Sub
  toRange.ClearComments
  With toRange
    With .AddComment(frRange.Comment.Text)
      .Shape.Width = frRange.Comment.Shape.Width
      .Shape.Height = frRange.Comment.Shape.Height
    End With
  End With
End Sub
Sub CopyFormat(ByVal frRange As Range, ByVal toRange As Range)
  On Error Resume Next
  If frRange Is Nothing Or toRange Is Nothing Then Exit Sub
  Set frRange = frRange.Parent.Range(frRange.Address)(1, 1)
  Set toRange = toRange.Parent.Range(toRange.Address)(1, 1)
  With toRange
    With .Interior
      .Color = frRange.Interior.Color
      .TintAndShade = frRange.Interior.TintAndShade
      '.ThemeColor = frRange.Interior.ThemeColor
      .PatternTintAndShade = frRange.Interior.PatternTintAndShade
      '.PatternThemeColor = frRange.Interior.PatternThemeColor
      .PatternColorIndex = frRange.Interior.PatternColorIndex
    End With
    With .Font
      .Color = frRange.Font.Color
      .Name = frRange.Font.Name
      .Bold = frRange.Font.Bold
      .Italic = frRange.Font.Italic
      .Size = frRange.Font.Size
      .Strikethrough = frRange.Font.Strikethrough
      .Subscript = frRange.Font.Subscript
      .Superscript = frRange.Font.Superscript
      .ThemeFont = frRange.Font.ThemeFont
      .TintAndShade = frRange.Font.TintAndShade
      .Underline = frRange.Font.Underline
    End With
    Dim index As Long
    index = xlDiagonalDown: GoSub Borders
    index = xlDiagonalUp: GoSub Borders
    index = xlInsideHorizontal: GoSub Borders
    index = xlInsideVertical: GoSub Borders
    index = xlEdgeBottom: GoSub Borders
    index = xlEdgeRight: GoSub Borders
    index = xlEdgeLeft: GoSub Borders
    index = xlEdgeTop: GoSub Borders
  End With
Exit Sub
Borders:
  With toRange.Borders(index)
    .Weight = frRange.Borders(index).Weight
    .Color = frRange.Borders(index).Color
    .LineStyle = frRange.Borders(index).LineStyle
    .ThemeColor = frRange.Borders(index).ThemeColor
    .TintAndShade = frRange.Borders(index).TintAndShade
  End With
Return
End Sub
Sub ClearFormat(ByVal oRange As Range)
  On Error Resume Next
  With oRange
    .Font.Color = 0
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    With .Interior
      .Pattern = xlNone
      .TintAndShade = 0
      .PatternTintAndShade = 0
    End With
  End With
End Sub
 
Bạn đưa file của bạn lên đây, tôi sẽ làm trực tiếp vào đó luôn
úi cám ơn anh. cả tuần nay em mày mò trên gg ko tìm ra cách . e, tải file thấy báo lớn hơn so với quy định. anh có mail hoặc zalo, hay fb ko để em gửi qua được ko ạ
Bài đã được tự động gộp:

Năm 2020 rồi hàm nào cũng có thể viết được, bạn có thể thử hàm dưới đây.
Hàm có thể copy những gì có ở ô tìm thấy gồm comment, định dạng, ...

Sử dụng:
=S_VLOOKUP(<Giá trị> , <Vùng cột duy nhất> , <Trả kết quả bắt đầu từ ô duy nhất + vị trí tìm thấy>, <so khớp>, <Lấy comment>, <Lấy định dạng>)

Ví dụ:
=S_VLOOKUP(1,A1:A1000,A1,0,TRUE,TRUE)

Bạn kiểm tra chạy hàm hoàn chỉnh không bị lỗi, không bị ngắc tiến trình Excel thì hãy sử dụng.


Tôi sẽ sớm có một bài viết để thực hiện nhiều hàm hơn với kĩ thuật code này.
---------------------------------------------------
Copy code vào một module và lưu file ở dạng xlsm, xlsb
JavaScript:
Option Explicit

#If VBA7 Then
  Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal HWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As LongPtr, ByVal lpTimerFunc As LongPtr) As Long
  Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal HWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
#Else
  Private Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
  Private Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
#End If

'///////////////////////////////////////////////////////
#If Win64 Then
  Private gTimerID As LongPtr, gTimerID2 As LongPtr
#Else
  Private gTimerID As Long, gTimerID2 As Long
#End If
'///////////////////////////////////////////////////////
Private VLOOKUP_OArgs(), VLOOKUP_OIndex As Integer

Function S_VLOOKUP(ByVal Look_value As Variant, _
                   ByVal table_Array As Excel.Range, _
                   ByVal table_index As Excel.Range, _
            Optional ByVal range_look As Boolean, _
            Optional ByVal CopyComment As Boolean, _
            Optional ByVal Formatting As Boolean, _
            Optional ByVal GetFormula As Boolean) As Variant
  On Error Resume Next
  KillTimer 0&, gTimerID: gTimerID = 0
  '-----------------------------------------------
  Set table_Array = table_Array.Parent.Range(table_Array.Address)
  Set table_index = table_index.Parent.Range(table_index.Address)(1, 1)
  Dim R As Excel.Range, Args
  Dim I As Long
  I = Application.WorksheetFunction.Match(Look_value, table_Array, range_look)
  If I > 0 Then
    Set R = table_index(I, 1)
    If GetFormula Then S_VLOOKUP = R.Formula Else S_VLOOKUP = R.Value
  Else
    S_VLOOKUP = "#N/A"
  End If
  '-----------------------------------------------
  Dim UB As Integer, K As Integer
  '-----------------------------------------------
  UB = UBound(VLOOKUP_OArgs, 2): K = UB
  K = K + 1
  ReDim Preserve VLOOKUP_OArgs(1 To K)
  VLOOKUP_OArgs(K) = Array(Application.Caller, R, CopyComment, Formatting)
Work:
  gTimerID = SetTimer(0&, 0&, 1, AddressOf S_VLOOKUP_callback)
End Function
'///////////////////////////////////////////////////////
Private Sub S_VLOOKUP_callback()
  On Error Resume Next
  Call KillTimer(0&, gTimerID): gTimerID = 0
  Call KillTimer(0&, gTimerID2): gTimerID2 = 0
  On Error GoTo 0
  '----------------------------------
  Dim UB As Integer
  UB = UBound(VLOOKUP_OArgs)
  If UB > 0 Then
    VLOOKUP_OIndex = VLOOKUP_OIndex + 1
    '-------------------------------------------
    Dim Args
    Args = VLOOKUP_OArgs(VLOOKUP_OIndex)
    If Not Args(1) Is Nothing Then
      If Args(2) Then CopyComment Args(1), Args(0)
      If Args(3) Then CopyFormat Args(1), Args(0)
    Else
      If Args(2) Then Args(0).ClearComments
      If Args(3) Then Call ClearFormat(Args(0))
    End If
    '-------------------------------------------
    If VLOOKUP_OIndex >= UB Then
      Erase VLOOKUP_OArgs: VLOOKUP_OIndex = 0
    Else
      gTimerID = SetTimer(0&, 0&, 1, AddressOf S_VLOOKUP_callback2)
    End If
  End If
End Sub
Private Sub S_VLOOKUP_callback2()
  S_VLOOKUP_callback
End Sub

'///////////////////////////////////////////////////////
Sub CopyComment(ByVal frRange As Range, ByVal toRange As Range)
  On Error Resume Next
  If frRange Is Nothing Or toRange Is Nothing Then Exit Sub
  Set frRange = frRange.Parent.Range(frRange.Address)(1, 1)
  Set toRange = toRange.Parent.Range(toRange.Address)(1, 1)
  If frRange.Comment Is Nothing Then Exit Sub
  toRange.ClearComments
  With toRange
    With .AddComment(frRange.Comment.Text)
      .Shape.Width = frRange.Comment.Shape.Width
      .Shape.Height = frRange.Comment.Shape.Height
    End With
  End With
End Sub
Sub CopyFormat(ByVal frRange As Range, ByVal toRange As Range)
  On Error Resume Next
  If frRange Is Nothing Or toRange Is Nothing Then Exit Sub
  Set frRange = frRange.Parent.Range(frRange.Address)(1, 1)
  Set toRange = toRange.Parent.Range(toRange.Address)(1, 1)
  With toRange
    With .Interior
      .Color = frRange.Interior.Color
      .TintAndShade = frRange.Interior.TintAndShade
      '.ThemeColor = frRange.Interior.ThemeColor
      .PatternTintAndShade = frRange.Interior.PatternTintAndShade
      '.PatternThemeColor = frRange.Interior.PatternThemeColor
      .PatternColorIndex = frRange.Interior.PatternColorIndex
    End With
    With .Font
      .Color = frRange.Font.Color
      .Name = frRange.Font.Name
      .Bold = frRange.Font.Bold
      .Italic = frRange.Font.Italic
      .Size = frRange.Font.Size
      .Strikethrough = frRange.Font.Strikethrough
      .Subscript = frRange.Font.Subscript
      .Superscript = frRange.Font.Superscript
      .ThemeFont = frRange.Font.ThemeFont
      .TintAndShade = frRange.Font.TintAndShade
      .Underline = frRange.Font.Underline
    End With
    Dim index As Long
    index = xlDiagonalDown: GoSub Borders
    index = xlDiagonalUp: GoSub Borders
    index = xlInsideHorizontal: GoSub Borders
    index = xlInsideVertical: GoSub Borders
    index = xlEdgeBottom: GoSub Borders
    index = xlEdgeRight: GoSub Borders
    index = xlEdgeLeft: GoSub Borders
    index = xlEdgeTop: GoSub Borders
  End With
Exit Sub
Borders:
  With toRange.Borders(index)
    .Weight = frRange.Borders(index).Weight
    .Color = frRange.Borders(index).Color
    .LineStyle = frRange.Borders(index).LineStyle
    .ThemeColor = frRange.Borders(index).ThemeColor
    .TintAndShade = frRange.Borders(index).TintAndShade
  End With
Return
End Sub
Sub ClearFormat(ByVal oRange As Range)
  On Error Resume Next
  With oRange
    .Font.Color = 0
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    With .Interior
      .Pattern = xlNone
      .TintAndShade = 0
      .PatternTintAndShade = 0
    End With
  End With
End Sub
cám ơn anh. mấy hôm nay em lần mò trên gg mãi ko thấy có hướng dẫn này anh ạ, em cám ơn anh nhiều ạ
Bài đã được tự động gộp:

Bạn đưa file của bạn lên đây, tôi sẽ làm trực tiếp vào đó luôn
ở sheet 1 ,cột A là các mã được đánh số từ 1...
cột B là dữ liệu 1, dữ liệu 2 ....
ở sheet 2, em muốn tham chiếu kiểu
khi em nhập mã bên sheet 2, thì cột dữ liệu bên sheet 2 cũng tự động hiển thi như shieet 1, và kèm cả comment như ở sheet 1 luôn ạ
 

File đính kèm

  • tham chieu coment và dữ liệu.xls
    143 KB · Đọc: 18
Lần chỉnh sửa cuối:
Các cao nhân ơi giúp em trường hợp này với ạ, em dùng hàm vlookup để lấy giá trị từ sheet 1 qua sheet 2. Vậy làm sao để lấy được cả comment + giá trị của ô đó ạ? Em có thử sử dụng VBA của các bác đều ko ra kết quả ạ :(
Phiền các anh/chị bớt chút thời gian xem giúp em. Em gửi file ví dụ đính kèm ạ. Em xin cám ơn!
 

File đính kèm

  • Vlookup lay gia tri - comment.xlsx
    13.8 KB · Đọc: 9
Web KT
Back
Top Bottom