Cách Đặt tên cho vùng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Excel365

Thành viên tích cực
Tham gia
29/10/10
Bài viết
865
Được thích
127
Giới tính
Nam
Mã:
Private Sub Worksheet_Activate()
    Range("d15:d23").Formula = "=SUMPRODUCT((Tonghop!R3C10:R136C11=Luong!RC2)*(Tonghop!R3C2:R136C2))"
End Sub

Toi co code như trên, nay tôi muốn thay thế
Tonghop!R3C10:R136C11 =
Luong!RC2 =
Tonghop!R3C2:R136C2 =
Bằng Tên hay như kiểu trong Excel như Tonghop!b3:b136
Và kết quả của công thức là giá trị (Không hiện công thức)
Nhờ các anh chị / giúp đỡ
Trân trọng!
 
Lần chỉnh sửa cuối:
Mã:
Private Sub Worksheet_Activate()
    Range("d15:d23").Formula = "=SUMPRODUCT((Tonghop!R3C10:R136C11=Luong!RC2)*(Tonghop!R3C2:R136C2))"
End Sub

Toi co code như trên, nay tôi muốn thay thế
Tonghop!R3C10:R136C11 =
Luong!RC2 =
Tonghop!R3C2:R136C2 =
Bằng Tên hay như kiểu trong Excel như Tonghop!b3:b136
Và kết quả của công thức là giá trị (Không hiện công thức)
Nhờ các anh chị / giúp đỡ
Trân trọng!
Mấy cái vụ này thì bạn cứ Record Macro, đặt name và sử dụng name là biết ngay thôi mà.
 
Upvote 0
Em có thử Record Macro rồi nhưng ko hiểu, nó dài quá, muốn rút gon lại.

Mã:
Sub Macro7()
    Sheets("Tonghop").Select
    Range("B3:B136").Select
    ActiveWorkbook.Names.Add Name:="Sluong", RefersToR1C1:= _
        "=Tonghop!R3C2:R136C2"
    ActiveWorkbook.Names("Sluong").Comment = ""
End Sub
 
Upvote 0
Em có thử Record Macro rồi nhưng ko hiểu, nó dài quá, muốn rút gon lại.

Mã:
Sub Macro7()
    Sheets("Tonghop").Select
    Range("B3:B136").Select
    ActiveWorkbook.Names.Add Name:="Sluong", RefersToR1C1:= _
        "=Tonghop!R3C2:R136C2"
    ActiveWorkbook.Names("Sluong").Comment = ""
End Sub
Muốn rút gọn lại thì thế này:
PHP:
Sub Macro7()
    ActiveWorkbook.Names.Add Name:="Sluong", RefersTo:="=Tonghop!$B$3:$B$136"
End Sub
 
Upvote 0
Mã:
Private Sub Worksheet_Activate()
    Range("d15:d23").Formula = "=SUMPRODUCT((Tonghop!R3C10:R136C11=Luong!RC2)*(Tonghop!R3C2:R136C2))"
End Sub

Toi co code như trên, nay tôi muốn thay thế
Tonghop!R3C10:R136C11 =
Luong!RC2 =
Tonghop!R3C2:R136C2 =
Bằng Tên hay như kiểu trong Excel như Tonghop!b3:b136
Và kết quả của công thức là giá trị (Không hiện công thức)
Nhờ các anh chị / giúp đỡ
Trân trọng!





Với Tonghop!R3C10:R136C11
thì mình có thể khai báo
dim Sluong as range
SLuong =
=Tonghop!$B$3:$B$136
Được không anh




 
Upvote 0
Với Tonghop!R3C10:R136C11
thì mình có thể khai báo
dim Sluong as range
SLuong =
=Tonghop!$B$3:$B$136
Được không anh
Bạn khai báo biến Sluong kiểu Range mà bạn gán cho nó bằng câu lệnh SLuong = =Tonghop!$B$3:$B$136 thì anh chàng VBA hổng hiểu là cái gì đâu.
Bạn phải sửa lại như vầy mới được: Set SLuong = Sheets("Tonghop").Range("B3:B136")
 
Upvote 0
Bạn khai báo biến Sluong kiểu Range mà bạn gán cho nó bằng câu lệnh SLuong = =Tonghop!$B$3:$B$136 thì anh chàng VBA hổng hiểu là cái gì đâu.
Bạn phải sửa lại như vầy mới được: Set SLuong = Sheets("Tonghop").Range("B3:B136")
Coi chừng họ hiểu nhầm code này với code bài #4, code này không có tạo Name trong Excel, còn code bài #4 thì có.

Code bài #4 : ActiveWorkbook.Names.Add Name:="Sluong", RefersTo:="=Tonghop!$B$3:$B$136".
có thể viết là : ActiveWorkbook.Sheets("Tonghop").Range("B3:B136").Name = "Sluong".
Hai cách viết này có gì khác nhau không?
 
Upvote 0
[/CODE]
Coi chừng họ hiểu nhầm code này với code bài #4, code này không có tạo Name trong Excel, còn code bài #4 thì có.

Code bài #4 : ActiveWorkbook.Names.Add Name:="Sluong", RefersTo:="=Tonghop!$B$3:$B$136".
có thể viết là : ActiveWorkbook.Sheets("Tonghop").Range("B3:B136").Name = "Sluong".
Hai cách viết này có gì khác nhau không?
Mình muốn thế name vô Công thức để cho công thức dễ nhìn, gọn

Mã:
Private Sub Worksheet_Activate()
   Range("d15:d23").Formula = "=SUMPRODUCT((Tonghop!R3C10:R136C11=Luong!RC2)*(Tonghop!R3C2:R136C2))"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Coi chừng họ hiểu nhầm code này với code bài #4, code này không có tạo Name trong Excel, còn code bài #4 thì có.

Code bài #4 : ActiveWorkbook.Names.Add Name:="Sluong", RefersTo:="=Tonghop!$B$3:$B$136".
có thể viết là : ActiveWorkbook.Sheets("Tonghop").Range("B3:B136").Name = "Sluong".
Hai cách viết này có gì khác nhau không?
Câu trả lời nào dành cho câu hỏi đó mà anh. Em trả lời có trích dẫn đàng hoàng mà. Hihi...
 
Upvote 0
[/CODE]
Mình muốn thế name vô Công thức để cho công thức dễ nhìn, gọn

Mã:
Private Sub Worksheet_Activate()
   Range("d15:d23").Formula = "=SUMPRODUCT((Tonghop!R3C10:R136C11=Luong!RC2)*(Tonghop!R3C2:R136C2))"
End Sub

Sau khi có name rồi, nếu gõ trực tiếp trên sheet thì bạn sẽ gõ thế nào?
Lại record macro sẽ có câu trả lời thôi
 
Upvote 0
Sau khi có name rồi, nếu gõ trực tiếp trên sheet thì bạn sẽ gõ thế nào?
Lại record macro sẽ có câu trả lời thôi

Vậy phải ko thầy?
Mã:
Private Sub Worksheet_Activate()
    Range("d15:d23").Formula = "=SUMPRODUCT((Ten=RC2)*(Sluong))"
End Sub


Nhưng em muốn kết quả ra giá trị ko phải công thức, thì làm sao hả thầy
Trường hợp mình không đặt Name mà mình khai báo

Mã:
Private Sub Worksheet_Activate()
Dim Ten As Range
Dim Sluong As Range
Set Ten = Sheets("Tonghop").Range("j3:k136")
Set Sluong = Sheets("Tonghop").Range("B3:B136")
    Range("d15:d23").Formula = "=SUMPRODUCT((Ten=RC2)*(Sluong))" 
End Sub

Nó báo lỗi Name mong thầy giúp em
 
Upvote 0
Vậy phải ko thầy?
Mã:
Private Sub Worksheet_Activate()
    Range("d15:d23").Formula = "=SUMPRODUCT((Ten=RC2)*(Sluong))"
End Sub


Nhưng em muốn kết quả ra giá trị ko phải công thức, thì làm sao hả thầy
Trường hợp mình không đặt Name mà mình khai báo

Mã:
Private Sub Worksheet_Activate()
Dim Ten As Range
Dim Sluong As Range
Set Ten = Sheets("Tonghop").Range("j3:k136")
Set Sluong = Sheets("Tonghop").Range("B3:B136")
    Range("d15:d23").Formula = "=SUMPRODUCT((Ten=RC2)*(Sluong))" 
End Sub

Nó báo lỗi Name mong thầy giúp em
Bạn đưa file lên đây tôi làm cho
Chú ý:
- Đừng có đưa cả 1 "rừng" dữ liệu lên đây, chẳng biết đâu mà lần nha
- Có nhiều người hỏi chỉ 1 câu đơn giản nhưng lại đưa lên đây 1 file gồm mười mấy cái Module + Form + mấy chục sheet dữ liệu
===> Nhìn là muốn chạy luôn
 
Upvote 0
Em gởi file lên

Bạn đưa file lên đây tôi làm cho
Chú ý:
- Đừng có đưa cả 1 "rừng" dữ liệu lên đây, chẳng biết đâu mà lần nha
- Có nhiều người hỏi chỉ 1 câu đơn giản nhưng lại đưa lên đây 1 file gồm mười mấy cái Module + Form + mấy chục sheet dữ liệu
===> Nhìn là muốn chạy luôn


Em gởi thầy file,
Trân trọng
 

File đính kèm

Upvote 0
Em gởi thầy file,
Trân trọng

Code sửa thành:
Mã:
Private Sub Worksheet_Activate()
  Dim Ten As String
  Dim Sluong As String
  Ten = "Tonghop!R3C10:R136C11"
  Sluong = "Tonghop!R3C2:R136C2"
  Range("D15:D23").Formula = "=SUMPRODUCT((" & Ten & "=RC2)*(" & Sluong & "))"
End Sub

Muốn chuyển thành Value, sửa thành:
Mã:
Private Sub Worksheet_Activate()
  Dim Ten As String
  Dim Sluong As String
  Ten = "Tonghop!R3C10:R136C11"
  Sluong = "Tonghop!R3C2:R136C2"
  With Range("D15:D23")
    .Value = "=SUMPRODUCT((" & Ten & "=RC2)*(" & Sluong & "))"
    .Value = .Value
  End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Đã nhắc nhở trước rồi mà vẫn thiếu sót
Cell D15 của sheet Luong có công thức:
Mã:
=SUMPRODUCT(([COLOR=#0000cd][B]Ten[/B][/COLOR]=$B15)*([B][COLOR=#ff0000]Sluong[/COLOR][/B]))
Cái thằng "Ten" ấy tôi có thể đoán từ code của bạn. Vậy còn thằng Sluong là cái quỷ gì đây?

Sluong là sản lượng đó thầy (Cột B bên bảng Tổng hợp)
ở cell 15 là do code trong sheet Luong đua ra đó thây
 
Upvote 0
Sluong là sản lượng đó thầy (Cột B bên bảng Tổng hợp)
ở cell 15 là do code trong sheet Luong đua ra đó thây

Tại lúc đầu tôi không thấy! Đã sửa lại rồi
Bại này lý ra bạn record macro cũng ra. Ví dụ tôi làm như sau:
- Bật record macro lên
- Tại sheet luong, gõ công thức vào D15:
Mã:
=SUMPRODUCT((Tonghop!$J$3:$K$136=$B15)*(Tonghop!$B$3:$B$136))
- Tắt record macro, bạn sẽ có được code như sau:
Mã:
Sub Macro1()
'
' Macro1 Macro
'

'
    Range("D15").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(([COLOR=#0000cd]Tonghop!R3C10:R136C11[/COLOR]=RC2)*([COLOR=#ff0000]Tonghop!R3C2:R136C2[/COLOR]))"
    Range("D16").Select
End Sub
Đặt đoạn 1 xanh thành 1 biến, đoạn màu đỏ thành 1 biến. Ví dụ:
Ten = Tonghop!R3C10:R136C11
Sluong = Tonghop!R3C2:R136C2
Ráp vào code
Mã:
Sub Macro1()
'
' Macro1 Macro
'

'   
    Dim Ten as String
    Dim Sluong as String
    [COLOR=#0000cd]Ten [/COLOR]= [COLOR=#0000cd]Tonghop!R3C10:R136C11[/COLOR]
[COLOR=#ff0000]    Sluong[/COLOR] = [COLOR=#ff0000]Tonghop!R3C2:R136C2[/COLOR]
    Range("D15").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(([COLOR=#0000cd]Ten[/COLOR]=RC2)*([COLOR=#ff0000]Sluong[/COLOR]))"
    Range("D16").Select
End Sub
Rút gọn lại 1 chút:
Mã:
Sub Macro1()
  Dim Ten as String
  Dim Sluong as String
  [COLOR=#0000cd]Ten [/COLOR]= [COLOR=#0000cd]Tonghop!R3C10:R136C11[/COLOR]
[COLOR=#ff0000]  Sluong[/COLOR] = [COLOR=#ff0000]Tonghop!R3C2:R136C2[/COLOR]
  Range("D15:D23").Value = "=SUMPRODUCT(([COLOR=#0000cd]Ten[/COLOR]=RC2)*([COLOR=#ff0000]Sluong[/COLOR]))"
End Sub
Xong!
Muốn chuyển thành value thì:
Mã:
Sub Macro1()
  Dim Ten as String
  Dim Sluong as String
  [COLOR=#0000cd]Ten [/COLOR]= [COLOR=#0000cd]Tonghop!R3C10:R136C11[/COLOR]
[COLOR=#ff0000]  Sluong[/COLOR] = [COLOR=#ff0000]Tonghop!R3C2:R136C2[/COLOR]
  With Range("D15:D23")
    .Value = "=SUMPRODUCT(([COLOR=#0000cd]Ten[/COLOR]=RC2)*([COLOR=#ff0000]Sluong[/COLOR]))"
    .Value = .Value
  End With
End Sub
Thế thôi
 
Upvote 0
Em cám ơn thầy nhiều nhe!
Thầy cho em hỏi thêm tý nhe!
Trong bài 13 em có hỏi, Code bên sheet Tonghop, là làm sao mình tô màu phân biệt số liêu của từng sheet chi tiết vậy thầy
Trân trọng!
 
Upvote 0

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

Back
Top Bottom