làm sao cố định range ? (1 người xem)

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

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

vumian

Mỗi bậc thang là mỗi Cell
Tham gia
12/3/07
Bài viết
267
Được thích
186
Nghề nghiệp
employee only, not a boss
Hi,

Gỉa sử mình define 1 range từ A2:A10 với tên là rangeA, khi mình xóa một trong những dòng ở giữa chúng thì vùng rangeA cũng sẽ bị tự động rút lại luôn, làm sao cố định giá trị của rangeA ??

Thanks
 
Thì đặt name là RANGEA, refer to =Sheet1!$A:$A là hết chạy
 
vumian đã viết:
Hi,

Gỉa sử mình define 1 range từ A2:A10 với tên là rangeA, khi mình xóa một trong những dòng ở giữa chúng thì vùng rangeA cũng sẽ bị tự động rút lại luôn, làm sao cố định giá trị của rangeA ??

Thanks

Có nhiều cách bạn ạ : Dùng Indirect, Offset . . .

VD này mình dùng Indirect, bạn tham khảo nhé.

Thân!
 

File đính kèm

Giả sử bạn muốn RANGEA luôn có 20 dòng thì lại có cách khác nữa:
Refer to =OFFSET(Sheet1!$A$2,0,0,20,1)
Cái này luôn luôn cho 1 RANGE có số dòng =20 tính từ cell A2, bất kễ bạn xóa bao nhiêu dòng
 
anhtuan1066 đã viết:
Giả sử bạn muốn RANGEA luôn có 20 dòng thì lại có cách khác nữa:
Refer to =OFFSET(Sheet1!$A$2,0,0,20,1)
Cái này luôn luôn cho 1 RANGE có số dòng =20 tính từ cell A2, bất kễ bạn xóa bao nhiêu dòng

Cho em ké với :
Thêm : Ngoại trừ xóa A2.

Thân!
 
Vậy thì =OFFSET(INDIRECT("A2"),0,0,20,1) khỏi sợ xóa bất kỳ dòng nào luôn
 
Hi, mình làm hôg được mấy cậu ơi

vậy nhá, công thức mình như sau (dang nằm ở sheetA):
=SUMPRODUCT(B!$Q$2:$Q$67*(B!$E$2:$E$67=$B6)*(B!$M$2:$M$67=G$5))

trong đó, cột Q,E,M (nguyên thủy thường là khỏang 100 dòng) nằm ở sheet B, chạy maro thì bị xóa những dòng thỏa điều kiện nào đó,thì còn lại khoảng 30 dòng, khi đó cong thức trên sẽ bị #REF, hoặc số 67 bị rút lại do ctrình xóa dòng, đôn lên

Vậy giờ làm sao khi chạy maro mà nó vẫn lấy hết range được
Thanks for your help
 
Bạn hãy up file, dễ cụ thể hơn.
 
Ko biết bạn định làm gì nhưng nhìn công thức trên là biết sai liền... Lý ra phải như vầy chứ:
=SUMPRODUCT((B!$Q$2:$Q$67)*(B!$E$2:$E$67=$B6)*(B!$M$ 2:$M$67=G$5))
Thiếu 2 dấu ngoặc
ANH TUẤN
 
hi, mình up file, các bạn xem giúp nha
- Bạn un-rar
- Đặt 2 file trên desktop
- Chạy output và enbale macro
- nhấn Ctrl D để chạy macro
- Chạy xong, thì công thức bên VP,LH,LT bị lỗi do macro xóa dòng
Cám ơn nhiều
 

File đính kèm

anhtuan1066 đã viết:
Ko biết bạn định làm gì nhưng nhìn công thức trên là biết sai liền... Lý ra phải như vầy chứ:

Thiếu 2 dấu ngoặc
ANH TUẤN

Cám on bro đã góp ý, nhưng công thức mình không sai ban ạ
 
Ái dà... đưa lên nhờ giúp mà bạn khóa code mất tiêu lấy gì giúp đây? Hay bạn muốn thử tài nghệ crack của mọi người vậy? hi... hi...
ANH TUẤN
 
Ấy dà, bro này thiệt tình nha, cái vụ này hôg liên quan code trong VBA, chỉ liên quan function trong Fx thôi à, bro chạy thừ chưa vậy
 
Lần chỉnh sửa cuối:
Quan trọng là code để xem cách update data như thế nào, có nhiều cách lấy dl, => mất name. Lưu ý, cắt link.
 
Mình mở code rùi các bro,
 

File đính kèm

Mình mới mở file ra đã thấy toàn #REF không àh chưa chạy macro nào hết. Tuy nhiên mình thấy lỗi nằm tại thủ tục Del_zero đó. Bác thử đừng gọi nó và chạy lại xem có lỗi không?

TP.
 
Thì như mình đã nói, khi chạy macro xong , đôi khi nó lại #REF, bạn copy công thức phía dưới ở dòng Loading plan : SUMPRODUCT(DRP!$Q$2:$Q$67*(DRP!$E$2:$E$67=$B6)*(DRP!$M$2:$M$67=G$5))

dán vô thì sẽ ra kết quả, có nghĩa là mỗi lần chạy macro xong, mình lại copy và dán như vậy đó, giờ có cách nào, công thức luôn đúng ?
 
Lần chỉnh sửa cuối:
SUMPRODUCT(DRP!$Q$2:$Q$67*(DRP!$E$2:$E$67=$B6)*(DR P!$M$2:$M$67=G$5))
Công thức như thế này mà bạn ấy cứ cho là đúng thì tôi thật ko hiểu nỗi...
ttphong2007 và ThuNghi nghĩ sao? Hay tôi bị nhằm ???
ANH TUẤN
 
1/Bạn nên nghiên cứu copy từ file đang đóng.
2/Name Qty nếu đặt trước, Sub Del_zero() sẽ xóa cột Q nên ReF, =>đặt name sau.
Tôi làm lại bạn xem thử có OK?
 

File đính kèm

Quá tuyệt cú mèo ThuNghi oi, bạn dùng offset, tôi thì hông rành cái vụ này, sao lại tham số là -4 và -12 vậy ThuNghi

Cám ơn ThuNghi nhiều nha
 
anhtuan1066 đã viết:
Công thức như thế này mà bạn ấy cứ cho là đúng thì tôi thật ko hiểu nỗi...
ttphong2007 và ThuNghi nghĩ sao? Hay tôi bị nhằm ???
ANH TUẤN

SUMPRODUCT(DRP!$Q$2:$Q$67*(DRP!$E$2:$E$67=$B6)*(DR+-+-+-+ P!$M$2:$M$67=G$5))

Sai cái chỗ đó đó bác ơi.
 
Dear all,
Chân thành đã giúp đỡ , nhưng còn 1 vấn đề nữa là
- Trong file DRP...xls thì cột Itemcode thường có những Itemcode mới (tức là chưa có bên cột SKUs của file Output, loadingplan Sheet)
=> Khi chạy macro, thì sẽ bị thiếu sót phần Itemcode mới này
Vậy : VIết module như thế nào để duyệt từ Itemcode bên DRP so với SKUs bên Output, nếu chưa có thì msgbox cho từng cái, nếu đầy đủ thì im re
Cám ơn nhiều
 
Hi hi, tui đây nè. Cha nội này là chiến hữu của mình nè. Hôm nào offline CFC nhớ đi nha.
Ông chạy thử code củ chuối này coi, nếu không vừa ý thì mình chỉnh tiếp hé
Mã:
Sub IsItemCode()
Dim i As Integer, k As Integer, temp As Long
If bIsBookOpen("Report File.xls") Then
    i = 6
    Do While Sheet3.Cells(i, 2) <> ""
        temp = Sheet3.Cells(i, 2)
        If Evaluate("=COUNTIF('[Report File.xls]Sheet1'!$E:$E," & temp & ")") = 0 Then _
            MsgBox "Hix, thieu ItemCode nay roi :  " & temp
        i = i + 1
    Loop
Else
    MsgBox "Open now !", vbCritical
End If
End Sub
____________________
Lâu quá không gặp, hôm nào rãnh alô tui cái há, hi hi

Thân!
TDN
 
Lần chỉnh sửa cuối:
SUMPRODUCT(DRP!$Q$2:$Q$67*(DRP!$E$2:$E$67=$B6)*(DRP!$M$2:$M$67=G$5))
SUMPRODUCT((DRP!$E$2:$E$67=$B6)*(DRP!$M$2:$M$67=G$5)*DRP!$Q$2:$Q$67)
SUMPRODUCT((DRP!$Q$2:$Q$67)*(DRP!$E$2:$E$67=$B6)*(DRP!$M$2:$M$67=G$5))
Cái này gọi là cái gì tóan tử, quên rồi.
Tất cả ct trên đầu OK, trừ Blank (SoiBien chỉ), khi copy ct từ bảng tính sang hay bị như vậy.
Còn Offset(Qty,0,-14) là lấy Name Qty tính lùi về trái 14 cột. (Offset(Qty,Row,Column)
 
hi TeDayNui,
Choài, tui thấy nick này tui nghi lắm, ai dè là cha nụi thiệt, haha,hôm nào lấy cục gạch alô quậy tưng luôn @$@!^% , mà sao cái code của ông kỳ kỳ vậy, - Sheet3 ở đâu ra, sao cho i chạy từ dòng 6,
- cái dòng Evaluate() sẽ báo lỗi vì sau khi copy xong, tui exit cái file DRP..xls rùi


hi ThuNghi,
Bác hiểu ý tui, hehe}}}}}


Hi anhtuan1066,SoiBien,
Rõ rùi nhá, do copy vô đây nó bị vậy thôi à --=0

Anyway, thanks all
 
Lần chỉnh sửa cuối:
vumian đã viết:
hi TeDayNui,
Choài, tui thấy nick này tui nghi lắm, ai dè là cha nụi thiệt, haha,hôm nào lấy cục gạch alô quậy tưng luôn @$@!^% , mà sao cái code của ông kỳ kỳ vậy, - Sheet3 ở đâu ra, sao cho i chạy từ dòng 6,
- cái dòng Evaluate() sẽ báo lỗi vì sau khi copy xong, tui exit cái file DRP..xls rùi
+ Sheet3 <> SheetName = "Sheet3" mà
+ i=6 vì data của ông bắt đầu từ dòng 6 mà
+ Còn Evalueate() báo lỗi vì File đóng, hi hi.. Nhưng bây giờ kết quả mĩ mãn rồi nên khỏi ngâm cứu hé.

@ hôm nào rãnh alô tui cái hé.
 
tedaynui đã viết:
Hi hi, tui đây nè. Cha nội này là chiến hữu của mình nè. Hôm nào offline CFC nhớ đi nha.
Ông chạy thử code củ chuối này coi, nếu không vừa ý thì mình chỉnh tiếp hé
Mã:
Sub IsItemCode()
Dim i As Integer, k As Integer, temp As Long
If bIsBookOpen("Report File.xls") Then
    i = 6
    Do While Sheet3.Cells(i, 2) <> ""   
        temp = Sheet3.Cells(i, 2)
        If Evaluate("=COUNTIF('[Report File.xls]Sheet1'!$E:$E," & temp & ")") = 0 Then _
            MsgBox "Hix, thieu ItemCode nay roi :  " & temp
        i = i + 1
    Loop
Else
    MsgBox "Open now !", vbCritical
End If
End Sub
____________________
Lâu quá không gặp, hôm nào rãnh alô tui cái há, hi hi

Thân!
TDN

hi TeDayNui oi,

Trong Output file, tui muốn xem những Itemcode nào thuộc DRP sheet chưa có bên Loading Plan sheet, thì msgbox, Với code sau

i = 2
Do While Sheet1.Cells(i, 5) <> "" <=== cái chỗ này làm sao cho chạy từ dòng 2 -> đến dòng cuối của range dữ liệu
temp = Sheet1.Cells(i, 5)
If Evaluate("=COUNTIF('LoadingPlan'!$B:$B," & temp & ")") = 0 Then _
MsgBox "Hix, thieu ItemCode nay roi : " & temp
i = i + 1
Loop

Chạy chưa đúng, hixhix

Thanks
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom