Công thức trong VBA

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

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Chào cả nhà!.

Mình muốn dùng VBA trong trường hợp sau:
- Khi bất kỳ dòng nào trong cột F chứa số 156 ỏ 152 thì cột M có giá trị của công thức: =IF(AND(F54=156,J54<>""),VLOOKUP($J54,TongHopNX!$B$6:$E$52,4,0),0)
(cột J là mã hàng).
- Nếu khác 156 và 152 thì cột M có giá trị là 0.
- Tránh việc tính toán được lập lại từ dòng đầu đến dòng hiện tại, mình muốn chỉ khi dòng nào trong cột f có số liệu (156 ỏ 152) thì tính toán dòng đó thôi.

Mong các bạn trợ giúp.

Cảm ơn nhiều.

Thân chào
 
Câu hỏi bạn có vài phần kô rõ ràng. Thí dụ, “156 ỏ 152” (?)
Tuy nhiên theo mình đoán ý bạn là như thế này:

Ở cột F Vlookup mã hàng, nếu giá trị = 156 hay 152 thì cell ở cột F có giá trị là 0.

Nếu ý của bạn đúng như trên thì bạn chỉnh cái công thức hàm trong các cell ở cột F thành như sau:

=IF(OR(J54=156,J54=152),0, VLOOKUP($J54,TongHopNX!$B $6:$E$52,4,0))
 
Upvote 0
Hi digita !
Cậu hiểu sai ý mình rùi.
- Trong công thức mình chỉ xét 156 thôi chưa xét 152, vì vậy khi dùng VBA sẽ sữa lại công thức xét cả 2 luôn.
- 156 & 152 là tên TK mà (dân kế toán nhìn là biết liền hà)
Chào bạn.

PS: Các bạn đâu hết rùi, không ai giúp mình hả.
 
Upvote 0
Mình kô làm kế toán nên kô hiễu các chữ viết tắc. Tuy nhiên nếu bạn
cho biết rõ bạn câu hỏi của bạn thì mọi ngườI sẻ đóng góp ý kiến.
 
Upvote 0
Bạn thử các này xem sao?!

Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 If Not Intersect(Target, Range("F:F")) Is Nothing Then
    If Target.Value = 152 Or Target.Value = 156 Then
    Target.Offset(0, 7).Value = "=" & Target.Address & " * 12"   'Tham khao
    
    Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "," & Target.Offset(0, 1).Address _
        & "<>),VLOOKUP(" & Target.Offset(0, 1).Address & ",TongHopNX!$B $6:$E$52,4,0),0)"
  
 End If: End If
[B]End Sub[/B]
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn SA_DQ đã quan tâm.

Nhưng thông cảm cho mình mình ứng dụng code của bạn hoài không được, bạn cho mình file mẫu nhen.

Cảm ơn nhiều lắm

Thân chào
 
Upvote 0
Thien đã viết:
Chào cả nhà!.

Mình muốn dùng VBA trong trường hợp sau:
- Khi bất kỳ dòng nào trong cột F chứa số 156 ỏ 152 thì cột M có giá trị của công thức: =IF(AND(F54=156,J54<>""),VLOOKUP($J54,TongHopNX!$B$6:$E$52,4,0),0)
(cột J là mã hàng).
- Nếu khác 156 và 152 thì cột M có giá trị là 0.
- Tránh việc tính toán được lập lại từ dòng đầu đến dòng hiện tại, mình muốn chỉ khi dòng nào trong cột f có số liệu (156 ỏ 152) thì tính toán dòng đó thôi.

Mong các bạn trợ giúp.

Cảm ơn nhiều.

Thân chào

Thử xem nhé :
Thân!
 

File đính kèm

Upvote 0
Dùng VLOOKUP trong module W_SelectionChange

Thien đã viết:
Nhưng thông cảm cho mình mình ứng dụng code của bạn hoài không được, bạn cho mình file mẫu nhen.Thân chào
/(/)ẫu đây nha!
À đoạn code trên còn thiếu giá trị, xin lỗi bạn & mọi người vì đã làm fiền!

Mã:
[b]Private Sub Worksheet_SelectionChange(ByVal Target As Range)[/b]
 If Not Intersect(Target, Range("F2:F99")) Is Nothing Then
    If Target.Value = 152 Or Target.Value = 156 Then
    Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "=156," & Target.Offset(0, 4).Address _
        & "<>1),VLOOKUP(" & Target.Offset(0, 4).Address & ",TongHop,2,0),0)"
  End If: End If
[b]End Sub[/b]
 

File đính kèm

Upvote 0
Rất cảm ơn Mr Okebab & SA_DQ.

Code của bạn SA_DQ cho mình thêm 1 chút nhen. Mình muốn chỉ hiện giá trị thôi chứ không hiện công thức.

Code của Mr Okebab chỉnh giúp mình khi cột M có mã hàng thì cột M có giá trị.

Bạn giúp mình nhen.

Thân chào
 
Lần chỉnh sửa cuối:
Upvote 0
Góp ý một tý

SA_DQ đã viết:
Mã:
[b]Private Sub Worksheet_SelectionChange(ByVal Target As Range)[/b]
 If Not Intersect(Target, Range("F2:F99")) Is Nothing Then
    If Target.Value = 152 Or Target.Value = 156 Then
    Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "=156," & Target.Offset(0, 4).Address _
        & "<>1),VLOOKUP(" & Target.Offset(0, 4).Address & ",TongHop,2,0),0)"
  End If: End If
[b]End Sub[/b]
Anh SA ơi,
Em đề nghị:
Mã:
Target.Offset(x,x).Formula
Mã:
Target.Areas.Count

Lê Văn Duyệt
 
Upvote 0
Thien đã viết:
Rất cảm ơn Mr Okebab & SA_DQ.

Code của bạn SA_DQ cho mình thêm 1 chút nhen. Mình muốn chỉ hiện giá trị thôi chứ không hiện công thức.

Code của Mr Okebab chỉnh giúp mình khi cột M có mã hàng thì cột M có giá trị.

Bạn giúp mình nhen.

Thân chào

Không hiểu lắm ?????

Thân!
 
Upvote 0
Thien đã viết:
Rất cảm ơn Mr Okebab & SA_DQ.

Code của bạn SA_DQ cho mình thêm 1 chút nhen. Mình muốn chỉ hiện giá trị thôi chứ không hiện công thức.

Code của Mr Okebab chỉnh giúp mình khi cột M có mã hàng thì cột M có giá trị.

Bạn giúp mình nhen.

Thân chào

Trong đoạn code
Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 If Not Intersect(Target, Range("F:F")) Is Nothing Then
    If Target.Value = 152 Or Target.Value = 156 Then
    Target.Offset(0, 7).Value = "=" & Target.Address & " * 12"   'Tham khao
    
    Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "," & Target.Offset(0, 1).Address _
        & "<>),VLOOKUP(" & Target.Offset(0, 1).Address & ",TongHopNX!$B $6:$E$52,4,0),0)"
  
    End If
 End If
[B]End Sub[/B]

Sửa thêm là:
Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 If Not Intersect(Target, Range("F:F")) Is Nothing Then
    If Target.Value = 152 Or Target.Value = 156 Then
    Target.Offset(0, 7).Value = "=" & Target.Address & " * 12"   'Tham khao
    
    Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "," & Target.Offset(0, 1).Address _
        & "<>),VLOOKUP(" & Target.Offset(0, 1).Address & ",TongHopNX!$B $6:$E$52,4,0),0)"
  [COLOR="Blue"]Target.Offset(0, 7).Value=Target.Offset(0, 7).Value[/COLOR]
   End If
 End If
[B]End Sub[/B]
 
Upvote 0
Anh TuanVNUNI ơi

Nó báo lỗi ngay chỗ này nè
Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "," & Target.Offset(0, 1).Address _
& "<>),VLOOKUP(" & Target.Offset(0, 1).Address & ",TongHopNX!$B$6:$E$52,4,0),0)"

Thân chào

PS: Anh Mr Okebab nè
Ý mình muốn nó tự động khi mình nhập mã hàng ở cột M thì cột J có giá trị.
Anh check mail nhen
Thân chào
 
Upvote 0
Thien đã viết:
Nó báo lỗi ngay chỗ này nè
Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "," & Target.Offset(0, 1).Address _
& "<>),VLOOKUP(" & Target.Offset(0, 1).Address & ",TongHopNX!$B$6:$E$52,4,0),0)" Thân chào
Bạn có thể LooKup() sang Sheets # được không?
Í mình là bạn phải gán tên cho vùng LooKup (trừ fi bạn xài cái mới của BG)
Ở chổ í mình xài tên mà, bạn thử xem nha!!!
 
Upvote 0
Ý sao vậy nè. Khi mình sửa name TongHop thành 4 cột và trả về giá trị của cột 4 thì chẳng động tịnh gì cả:
Target.Offset(0, 7).Value = "=IF(AND(" & Target.Address & "=156," & Target.Offset(0, 4).Address _
& "<>1),VLOOKUP(" & Target.Offset(0, 4).Address & ",TongHop,4,0),0)"

Bác SA_DQ giúp mình nhen

Thân chào
 
Upvote 0
Vào VBA, nhấn đúp chuột vào sheet cần lập công thức, rồi thêm đoạn code sau:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F:F")) Is Nothing Then
   If Target.Value = 152 Or Target.Value = 156 Then
[B][COLOR=red]    Target.Offset(0, 7).FormulaR1C1 = _
        "=IF(AND(RC[-7]=156,RC[-6]<>""""),VLOOKUP(RC[-3],TongHopNX!R6C2:R52C5,4,0),0)"
[/COLOR][/B]   End If
End If
End Sub
 
Upvote 0
Anh son ơi
Không hiểu sao vẫn không được. cứu tớ với
Thân chào
 
Lần chỉnh sửa cuối:
Upvote 0
Mình nghĩ bạn nên xem lại các công thức bạn đã lập có thể bị chồng chéo (đặc biệt là trên sheet NhatKyNX), các tên (mình thấy tên MAVT lấy thông số ở một file khác)....
Với file của bạn mình Insert thêm một sheet và đưa đoạn code trên vào thì "chạy" ngon, còn trên sheet NhatKyNX thì có lỗi Circular.
Theo minh bạn nên tao lại sheet NhatKyNX.
 
Upvote 0
Anh Mr Okebab này.
File anh hay nhưng không đúng ý trong file mình nhờ giúp.
Anh dùng file mình rùi ứng dụng thử xem sẽ khó đấy. Nó bị lổi lấy giá trị không đúng với giá xuất (các ô màu vàng nè).
Anh giúp thêm 1 chút nhen.
Thân chào

PS: Anh Son nói chính xác chính vi vay em muốn sau khi có được số liệu của hàm vlookup ở cột Q thì chuyển nó thành value thui để em cho cột M bằng Q thì ổn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom