Tạo giá trị value mỗi khi thay đổi trong worksheet_Change

  • Thread starter Thread starter anktdn
  • Ngày gửi Ngày gửi
Liên hệ QC

anktdn

Thành viên chính thức
Tham gia
18/6/06
Bài viết
72
Được thích
77
Nghề nghiệp
acc
Nhờ anh chị giúp đỡ tạo giá trị tại cột H là giá trị value khi ta nhập mới giá trị tại cột G , không hiện công thức như file mẫu .
 

File đính kèm

Nhờ anh chị giúp đỡ tạo giá trị tại cột H là giá trị value khi ta nhập mới giá trị tại cột G , không hiện công thức như file mẫu .
Dùng thử code này xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
    On Error Resume Next
    If Target = "" Then Target.Offset(, 1) = ""
    Target.Offset(, 1) = Range("B4:C8").Find(Target, Lookat:=xlWhole).Offset(, 1)
  End If
End Sub
 
Upvote 0
Cách của ndu chỉ khi lick chọn 2 lần, giá trị cột H mới xuất hiện, nhờ ndu chỉnh lại chỉ nhập 1 lần là giá trị tại ô H xuất hiện.thanks
 
Upvote 0
Không thể xài sự kiện Worksheet_SelectionChange đâu!

Nhờ anh chị giúp đỡ tạo giá trị tại cột H là giá trị value khi ta nhập mới giá trị tại cột G , không hiện công thức như file mẫu .
Mà là:
PHP:
 Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
   With Target
      .Offset(, 1) = Application.WorksheetFunction.VLookup(.Value, Range("B4:C9"), 2, False)
   End With
End If
End Sub

Thử & cho biết đạt chưa nha.
 
Upvote 0
Nếu tôi chuyển "B4:C9" sang Sheet2 thì PHP Code viết như thế nào, tôi thử dùng hàm name thay thế mà không được ?
 
Upvote 0
Bạn thử với macro này xem sao

Nếu tôi chuyển "B4:C9" sang Sheet2 thì Code viết như thế nào, tôi thử dùng name thay thế mà không được ?

PHP:
  Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
   Dim Sh As Worksheet
   Set Sh = Sheets("sheet2")
   With Target
      On Error GoTo GPE
'      .Offset(, 1) = WorksheetFunction.VLookup(.Value, Sh.Range("B4:C9"), 2, False)'
      .Offset(, 1) = _
             Application.WorksheetFunction.VLookup(.Value, Sh.Range("Bang"), 2, False)
   End With
End If
Exit Sub
GPE:        Target.Offset(, 1) = "Chua Co Ma Nay"
End Sub
 
Upvote 0
PHP:
  Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
   Dim Sh As Worksheet
   Set Sh = Sheets("sheet2")
   With Target
      On Error GoTo GPE
'      .Offset(, 1) = WorksheetFunction.VLookup(.Value, Sh.Range("B4:C9"), 2, False)'
      .Offset(, 1) = _
             Application.WorksheetFunction.VLookup(.Value, Sh.Range("Bang"), 2, False)
   End With
End If
Exit Sub
GPE:        Target.Offset(, 1) = "Chua Co Ma Nay"
End Sub
Các trường hợp trên có thể dùng Find, sao anh không dùng mà lại VLOOKUP nhỉ?
From Sa_DQ:
Xài cho đỡ quên =VLOOKUP() đó thôi!

Cách của ndu chỉ khi lick chọn 2 lần, giá trị cột H mới xuất hiện, nhờ ndu chỉnh lại chỉ nhập 1 lần là giá trị tại ô H xuất hiện.thanks
Bạn muốn thể chỉ cần sửa:
Private Sub Worksheet_Change
thành:
Private Sub Worksheet_SelectionChange
là xong!
Có điều tôi không hiểu tại sao bạn lại "muốn" kỳ lạ thế
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Vậy trong trường hợp này ta sử dụng những hàm SUM, SUMIF, SUMPRODUCT hoặc nhân giá trị giữa 2 cột thì công thức thể hiện như thế nào, vì em thử hàm sumif và nhân giá trị 2 cột với nhau thì chưa được , nhờ anh chị giúp và giải thích code khi viết hàm trong đoạn code :
.Offset(, 1) = Application.WorksheetFunction."......".thanks
 
Upvote 0
Vậy trong trường hợp này ta sử dụng những hàm SUM, SUMIF, SUMPRODUCT hoặc nhân giá trị giữa 2 cột thì công thức thể hiện như thế nào, vì em thử hàm sumif và nhân giá trị 2 cột với nhau thì chưa được , nhờ anh chị giúp và giải thích code khi viết hàm trong đoạn code :
.Offset(, 1) = Application.WorksheetFunction."......".thanks
Thà rằng xài công thức, còn đã VBA thì bạn tạm "quên" mấy cái SUMIF, SUMPRODUCT gì đó đi ---> Bạn chỉ cần nêu ý định bạn muốn trong file, mọi người sẽ làm giúp
Nói thêm: Application.WorksheetFunction dùng để gọi hàm từ bảng tính vào!
Ví dụ: để gọi SUMIF thì:
Application.WorksheetFunction.SumIF(....)
vân vân...
Nhưng đã viết VBA thì ít ai làm thế (cùng lắm mới đụng đến khi.. hết cách)
 
Upvote 0
Web KT

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

Back
Top Bottom