Copy dồn mảng kết quả (1 người xem)

Liên hệ QC

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

Lần chỉnh sửa cuối:
Thử:
PHP:
Range("B8:V8").SpecialCells(xlCellTypeConstants, 1).Copy Range("H14")
Range("B9:V11").SpecialCells(xlCellTypeFormulas, 1).Copy Range("H15")
hi hi... đẻ em xem có đúng không đã chị nhé?
À nhưng em cần là vẫn giữ nguyên công thức tham chiếu cơ mà chị
Bài đã được tự động gộp:

Thử:
PHP:
Range("B8:V8").SpecialCells(xlCellTypeConstants, 1).Copy Range("H14")
Range("B9:V11").SpecialCells(xlCellTypeFormulas, 1).Copy Range("H15")
Chị ơi, tức là lôi cả công thức xuống chị à, không phải như vậy.
 
hi hi... đẻ em xem có đúng không đã chị nhé?
À nhưng em cần là vẫn giữ nguyên công thức tham chiếu cơ mà chị
Bài đã được tự động gộp:


Chị ơi, tức là lôi cả công thức xuống chị à, không phải như vậy.
Đã bẩu không phải Chị rồi mà :p:p:p
 
hi hi... đẻ em xem có đúng không đã chị nhé?
À nhưng em cần là vẫn giữ nguyên công thức tham chiếu cơ mà chị
Bài đã được tự động gộp:


Chị ơi, tức là lôi cả công thức xuống chị à, không phải như vậy.
Tôi thấy trong File của bạn có công thức, nên tôi lấy công thức. Nếu không muốn công thức, cũng được thôi mà.
 
Tôi thấy trong File của bạn có công thức, nên tôi lấy công thức. Nếu không muốn công thức, cũng được thôi mà.
Ý của bạn í là ở vùng bên dưới cũng có chứa công thức như vùng bên trên chứ không chỉ giá trị "chị" ạ :p
 
Cái này là dùng cho dữ liệu như trong file, khác đi thì phải chế biến lại bạn nhé:
Mã:
Sub Test()
    Dim Cll As Range
    [B8:V8].SpecialCells(xlCellTypeConstants, 1).Copy [B14]
    [B9:V11].SpecialCells(xlCellTypeFormulas, 1).Copy [B15]
    For Each Cll In [B15:F17]
        Cll.Formula = Cll.Offset(-6, (Cll.Column - 2) * 4).Formula
    Next
End Sub
Nếu không quan tâm đến định dạng thì bạn bỏ luôn 2 câu lệnh đầu sub và đổi [B15:F17] thành [B14:F17], code còn lại thế này:
Mã:
Sub Test()
    Dim Cll As Range
    For Each Cll In [B14:F17]
        Cll.Formula = Cll.Offset(-6, (Cll.Column - 2) * 4).Formula
    Next
End Sub
Xì-pam tí: Bạn làm nghề gì vậy?
 
Thử một tí tí nha :p:p:p
PHP:
Sub DonDon()
    Dim sArr, dArr, I As Long, J As Long, K As Long, Col As Long, C As Long
Col = Application.CountA(Range("B8:W8"))
sArr = Range("B8:B11").Resize(, 22).Formula
ReDim dArr(1 To UBound(sArr), 1 To Col)
For I = 1 To UBound(sArr)
    K = K + 1
    For J = 1 To UBound(sArr, 2)
        If sArr(I, J) <> Empty Then
            C = C + 1
            dArr(K, C) = sArr(I, J)
            If C = Col Then C = 0
        End If
    Next J
Next I
Range("H14").Resize(K, Col) = dArr
End Sub
 
Thử một tí tí nha :p:p:p
PHP:
Sub DonDon()
    Dim sArr, dArr, I As Long, J As Long, K As Long, Col As Long, C As Long
Col = Application.CountA(Range("B8:W8"))
sArr = Range("B8:B11").Resize(, 22).Formula
ReDim dArr(1 To UBound(sArr), 1 To Col)
For I = 1 To UBound(sArr)
    K = K + 1
    For J = 1 To UBound(sArr, 2)
        If sArr(I, J) <> Empty Then
            C = C + 1
            dArr(K, C) = sArr(I, J)
            If C = Col Then C = 0
        End If
    Next J
Next I
Range("H14").Resize(K, Col) = dArr
End Sub
Em cảm ơn chị
♫ђöล♥ßล†♥†µ♫ anh
nghiaphuc chị
phulien1902

Vẫn không phải các anh chị ơi, ý của em là như này ::"Dịch chuyển code thôi anh chị à" Các anh chị xem lại và giúp em nhé.
 

File đính kèm

File đính kèm

File đính kèm

Có gì bất thường nhỉ? Bạn xem trong file xem nào.
Có gì bất thường nhỉ? Bạn xem trong file xem nào.
Anh
nghiaphuc
ơi, ý tưởng của em là ngay từ công thức của mảng đầu tiên triển khai được như thế, chứ không phải là copy từ trên xuống anh à.
Anh nghĩ cách giúp e nhé.
Cảm ơn các anh chị,
Bài đã được tự động gộp:

Ngồi rãnh viết 1 sub cho em không gì bằng 2 từ bá đạo :)) Đảm bảo xem biết thay đổi vị trí khi cần :D
No! no. cảm ơn anh nhé
Như này thì em làm bằng tay còn nhanh hơn.
Nhưng dẫu sao cũng rất cảm ơn anh.
 
Anh
nghiaphuc
ơi, ý tưởng của em là ngay từ công thức của mảng đầu tiên triển khai được như thế, chứ không phải là copy từ trên xuống anh à.
Anh nghĩ cách giúp e nhé.
Cảm ơn các anh chị,
Ôi trời đất! Bây giờ mới hiểu, nãy giờ vẫn cứ tưởng là công thức đã có sẵn bên trên, làm sao để copy xuống bên dưới và vẫn giữ nguyên tham chiếu như công thức ở trên. Hóa ra là em nó chưa được sinh ra :p
Cái vụ hiểu lầm này là do bạn à nha. Nếu lúc đầu bạn đừng để công thức ở mấy hàng 8:11 thì anh "chị" em đâu có trật đường ray như vậy.

Ngồi rãnh viết 1 sub cho em không gì bằng 2 từ bá đạo :)) Đảm bảo xem biết thay đổi vị trí khi cần :D
Ôi! Các hạ quả nhiên là lợi hại đó mà :p
 
Ôi trời đất! Bây giờ mới hiểu, nãy giờ vẫn cứ tưởng là công thức đã có sẵn bên trên, làm sao để copy xuống bên dưới và vẫn giữ nguyên tham chiếu như công thức ở trên. Hóa ra là em nó chưa được sinh ra :p
Cái vụ hiểu lầm này là do bạn à nha. Nếu lúc đầu bạn đừng để công thức ở mấy hàng 8:11 thì anh "chị" em đâu có trật đường ray như vậy.

Ôi! Các hạ quả nhiên là lợi hại đó mà :p
Hi hi... mấy cái bên trên là em mô phỏng để mọi người dễ hiểu thui mà anh
nghiaphuc
 
Ôi trời đất! Bây giờ mới hiểu, nãy giờ vẫn cứ tưởng là công thức đã có sẵn bên trên, làm sao để copy xuống bên dưới và vẫn giữ nguyên tham chiếu như công thức ở trên. Hóa ra là em nó chưa được sinh ra :p
Cái vụ hiểu lầm này là do bạn à nha. Nếu lúc đầu bạn đừng để công thức ở mấy hàng 8:11 thì anh "chị" em đâu có trật đường ray như vậy.

Ôi! Các hạ quả nhiên là lợi hại đó mà :p
Haha xứng đáng bá đạo chưa anh? ;):p
Bài đã được tự động gộp:

Ngồi rãnh viết 1 sub cho em không gì bằng 2 từ bá đạo :)) Đảm bảo xem biết thay đổi vị trí khi cần :D
Mã:
Rút ngắn lại tý
Sub Test()
    Dim rSrc As Range
    Dim rDst As Range
    Dim vSrc As Variant
    
    Set rSrc = Range(["B8:B11"])
    Set rDst = Range("B14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["G8:G11"])
   Set rDst = Range("C14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["L8:L11"])
   Set rDst = Range("D14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["Q8:Q11"])
   Set rDst = Range("E14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["V8:V11"])
   Set rDst = Range("F14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
End Sub
 
Lần chỉnh sửa cuối:
Haha xứng đáng bá đạo chưa anh? ;):p
Bài đã được tự động gộp:


Mã:
Rút ngắn lại tý
Sub Test()
    Dim rSrc As Range
    Dim rDst As Range
    Dim vSrc As Variant
   
    Set rSrc = Range(["B8:B11"])
    Set rDst = Range("B14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["G8:G11"])
   Set rDst = Range("C14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["L8:L11"])
   Set rDst = Range("D14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["Q8:Q11"])
   Set rDst = Range("E14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
   Set rSrc = Range(["V8:V11"])
   Set rDst = Range("F14")
    vSrc = rSrc.Formula
   rDst.Resize(UBound(vSrc, 1)).Formula = (vSrc)
End Sub
Cảm ơn anh , bài này dưới 0 độ C anh nhé, anh nghĩ cách khác xem như nào anh nhé.
Nếu hàng ngàn mảng như vậy anh làm như nào?
 
Hi hi... mấy cái bên trên là em mô phỏng để mọi người dễ hiểu thui mà anh
nghiaphuc
Hỏi lại bạn một chút này: Công thức có nhất thiết phải y như vậy không, hay là dùng công thức khác cũng được, miễn ra đúng kết quả?
Thêm nữa, dữ liệu thực tế của bạn có giống như vùng bên trên hay không? Nghĩa là gồm có nhiều vùng, mỗi vùng có 5 hàng, 2 cột và các vùng cách đều nhau đúng với khoảng cách như vậy, dữ liệu trong mỗi vùng khi nào cũng được nhập đầy đủ như vậy.
Biết đâu lại có cách khác hay hơn.
 
Cảm ơn anh , bài này dưới 0 độ C anh nhé, anh nghĩ cách khác xem như nào anh nhé.
Nếu hàng ngàn mảng như vậy anh làm như nào?
Thì cách tốt nhất em làm ở bài 11, thực tế bài đó giải quyết nhanh cho em chỉ cần thay đổi vùng cần copy thôi
Chứ mấy cái anh viết dưới hình thức cho vui chứ ai mà làm kiểu đó :p
 
Thì cách tốt nhất em làm ở bài 11, thực tế bài đó giải quyết nhanh cho em chỉ cần thay đổi vùng cần copy thôi
Chứ mấy cái anh viết dưới hình thức cho vui chứ ai mà làm kiểu đó :p
Các hạ lại chưa hiểu ý của nữ thí chủ rồi :p
Mấy cái công thức đó ban đầu nó chưa có ở vùng bên trên đâu, làm sao sau khi chạy code thì nó mới có công thức như vậy chứ không phải là nó có sẵn để copy xuống.
Nãy giờ anh em chạy trật đường ray hết :cool:
 
Hỏi lại bạn một chút này: Công thức có nhất thiết phải y như vậy không, hay là dùng công thức khác cũng được, miễn ra đúng kết quả?
Thêm nữa, dữ liệu thực tế của bạn có giống như vùng bên trên hay không? Nghĩa là gồm có nhiều vùng, mỗi vùng có 5 hàng, 2 cột và các vùng cách đều nhau đúng với khoảng cách như vậy, dữ liệu trong mỗi vùng khi nào cũng được nhập đầy đủ như vậy.
Biết đâu lại có cách khác hay hơn.
Anh ơi, cái này anh hỏi mới là trọng tâm anh
nghiaphuc
Công thức cũng không phải như vậy anh à. Đây chỉ là mô phỏng để lấy phương pháp áp dụng cho những trường hợp tương tự thôi anh à,

Đương nhiên khoảng cách thì phải như vậy. Nhưng nó vẫn phải tuân theo quy luât.
Hi hi hi,,,, chắc anh đã nghĩ ra cách can thiệp vào bài toàn roài.
Anh cố giúp em nhé
Cảm ơn anh.
 
Các hạ lại chưa hiểu ý của nữ thí chủ rồi :p
Mấy cái công thức đó ban đầu nó chưa có ở vùng bên trên đâu, làm sao sau khi chạy code thì nó mới có công thức như vậy chứ không phải là nó có sẵn để copy xuống.
Nãy giờ anh em chạy trật đường ray hết :cool:
Chắc có vui kaka
 
Anh ơi, cái này anh hỏi mới là trọng tâm anh
nghiaphuc
Công thức cũng không phải như vậy anh à. Đây chỉ là mô phỏng để lấy phương pháp áp dụng cho những trường hợp tương tự thôi anh à,

Đương nhiên khoảng cách thì phải như vậy. Nhưng nó vẫn phải tuân theo quy luât.
Hi hi hi,,,, chắc anh đã nghĩ ra cách can thiệp vào bài toàn roài.
Anh cố giúp em nhé
Cảm ơn anh.
Thử làm cái code lợi hại để bon chen với cái code bá đạo trên kia thử xem. Công thức khác, kết quả giống:
Mã:
Sub LoiHai()
    [B14:F14] = [=COLUMN(A:WWW)]
    [B15:F17].FormulaR1C1 = "=SUM(OFFSET(R6C,-ROWS(R13C:R[-1]C),(COLUMN()-2)*4,ROWS(R12C:R[-1]C),2))"
End Sub
 
Thử làm cái code lợi hại để bon chen với cái code bá đạo trên kia thử xem. Công thức khác, kết quả giống:
Mã:
Sub LoiHai()
    [B14:F14] = [=COLUMN(A:WWW)]
    [B15:F17].FormulaR1C1 = "=SUM(OFFSET(R6C,-ROWS(R13C:R[-1]C),(COLUMN()-2)*4,ROWS(R12C:R[-1]C),2))"
End Sub
Em cũng e ngại vụ khoảng cách cột không đồng đều thì banh xác quá anh
 
Em cũng e ngại vụ khoảng cách cột không đồng đều thì banh xác quá anh
Cách không đều thì công thức trên kia tèo téo teo ngay. Nhưng mà hên quá, trên kia có câu "Đương nhiên khoảng cách thì phải như vậy." rồi.
 
Thử làm cái code lợi hại để bon chen với cái code bá đạo trên kia thử xem. Công thức khác, kết quả giống:
Mã:
Sub LoiHai()
    [B14:F14] = [=COLUMN(A:WWW)]
    [B15:F17].FormulaR1C1 = "=SUM(OFFSET(R6C,-ROWS(R13C:R[-1]C),(COLUMN()-2)*4,ROWS(R12C:R[-1]C),2))"
End Sub
hi hi..... cái này cũng giống như một lần bác @ndu96081631 viết cho em một lần ở bài toán khác anh af, làm thì đúng nhưng nhìn kieue R1C1 khó hiểu quá anh
nghiaphuc
ơi.
Bài đã được tự động gộp:

Cách không đều thì công thức trên kia tèo téo teo ngay. Nhưng mà hên quá, trên kia có câu "Đương nhiên khoảng cách thì phải như vậy." rồi.
Anh thì cứ nghe vớ vẩn, làm gì người ta cũng phải tuân theo quy luật của nó chứ. Kể cả làm khoa học lẫn không làm khoa học
Không biết sắp xếp theo quy luật thi .........
 
hi hi..... cái này cũng giống như một lần bác @ndu96081631 viết cho em một lần ở bài toán khác anh af, làm thì đúng nhưng nhìn kieue R1C1 khó hiểu quá anh
nghiaphuc
ơi.
Kệ nó, cần gì hiểu đâu, bạn cứ record macro rồi gõ công thức bình thường là sẽ thấy công thức kiểu như vậy trong code thôi. Sau đó thì copy dán qua bên code đang viết. Anh chàng FormulaR1C1 này lợi hại lắm đấy, gán công thức cho cả vùng chỉ cần 1 câu lệnh, khỏe ru.
 
Kệ nó, cần gì hiểu đâu, bạn cứ record macro rồi gõ công thức bình thường là sẽ thấy công thức kiểu như vậy trong code thôi. Sau đó thì copy dán qua bên code đang viết. Anh chàng FormulaR1C1 này lợi hại lắm đấy, gán công thức cho cả vùng chỉ cần 1 câu lệnh, khỏe ru.
Hi hi..... nhưng không làm bằng R1C1 thì công thức trên có sử được không hở anh
nghiaphuc
hôm nay em mới biết anh siêu phết.
Bài đã được tự động gộp:

Thử làm cái code lợi hại để bon chen với cái code bá đạo trên kia thử xem. Công thức khác, kết quả giống:
Mã:
Sub LoiHai()
    [B14:F14] = [=COLUMN(A:WWW)]
    [B15:F17].FormulaR1C1 = "=SUM(OFFSET(R6C,-ROWS(R13C:R[-1]C),(COLUMN()-2)*4,ROWS(R12C:R[-1]C),2))"
End Sub
Anh @nghiaphuc oy, như vậy thì anh giải quyết bài này quá ngon.
https://www.giaiphapexcel.com/diendan/threads/code-hàm-sumifs.136727/
Anh giải quyết giúp em với.
Cảm ơn anh trước nhé!
 
Hi hi..... nhưng không làm bằng R1C1 thì công thức trên có sử được không hở anh
nghiaphuc
Nhưng mà công thức như trên của tôi có được chấp nhận không đã kìa, về kết quả thì nó giống y như các công thức trong file ban đầu của bạn rồi, nhưng lại lợi hơn ở chỗ là dùng 1 công thức cho cả vùng chứ không phải mỗi ô một công thức. Khi lập công thức cho bảng bao giờ người ta cũng đi tìm một công thức chung cho bảng hay ít nhất là cho cột chứ chẳng ai lại đi lập mỗi ô một công thức như vậy cả.
hôm nay em mới biết anh siêu phết.
Bạn quá khen rồi, tôi toàn đi học lỏm không à.
 
Nhưng mà công thức như trên của tôi có được chấp nhận không đã kìa, về kết quả thì nó giống y như các công thức trong file ban đầu của bạn rồi, nhưng lại lợi hơn ở chỗ là dùng 1 công thức cho cả vùng chứ không phải mỗi ô một công thức. Khi lập công thức cho bảng bao giờ người ta cũng đi tìm một công thức chung cho bảng hay ít nhất là cho cột chứ chẳng ai lại đi lập mỗi ô một công thức như vậy cả.

Bạn quá khen rồi, tôi toàn đi học lỏm không à.
hi hi... học lỏm nhưng thông minh, sáng tạo là quá đingr roài anh oy.
Bài đã được tự động gộp:

Thử làm cái code lợi hại để bon chen với cái code bá đạo trên kia thử xem. Công thức khác, kết quả giống:
Mã:
Sub LoiHai()
    [B14:F14] = [=COLUMN(A:WWW)]
    [B15:F17].FormulaR1C1 = "=SUM(OFFSET(R6C,-ROWS(R13C:R[-1]C),(COLUMN()-2)*4,ROWS(R12C:R[-1]C),2))"
End Sub
Anh oy, cái công thức này sao em nhập vào bảng tính không được nhỉ?
Anh làm ảo thuật hở anh @nghiaphuc ? Anh giải thích cho em với (Hoặc là anh viết cụ thể đi, ai mà hiểu được chết liền)
 
Lần chỉnh sửa cuối:
Anh oy, cái công thức này sao em nhập vào bảng tính không được nhỉ?
Anh làm ảo thuật hở anh @nghiaphuc ? Anh giải thích cho em với (Hoặc là anh viết cụ thể đi, ai mà hiểu được chết liền)
Ủa, bạn cứ chạy code đi, và nhìn vào công thức sau khi chạy code thôi, nó có gì lạ đâu, chẳng hạn công thức cho ô B15 nó thế này:
Mã:
=SUM(OFFSET(B$6,-ROWS(B$13:B14),(COLUMN()-2)*4,ROWS(B$12:B14),2))
Còn nếu bạn muốn nhập công thức y như vậy vào bảng tính thì bạn phải vào Options của Excel và tick vào mục R1C1 reference style.GPE.png
 
Ủa, bạn cứ chạy code đi, và nhìn vào công thức sau khi chạy code thôi, nó có gì lạ đâu, chẳng hạn công thức cho ô B15 nó thế này:
Mã:
=SUM(OFFSET(B$6,-ROWS(B$13:B14),(COLUMN()-2)*4,ROWS(B$12:B14),2))
Còn nếu bạn muốn nhập công thức y như vậy vào bảng tính thì bạn phải vào Options của Excel và tick vào mục R1C1 reference style.View attachment 201701
Em cảm ơn anh, nhưng anh ơi cái công thức này cho vào code thì cũng giống như R1C1 hở anh?
 
Cháu thấy toàn tên con gái bác
Lập luận chẳng có tí tẹo lô gic gì cả. Chị này kỳ kỳ ghê!!!

Em ngưỡng mộ chị, lấy cái ảnh của chị làm hình đại diện cho ních của em thì sao? Rồi em lấy tên của chị đặt tên cho ních của em thì sao?
 
Em cảm ơn anh, nhưng anh ơi cái công thức này cho vào code thì cũng giống như R1C1 hở anh?
Đúng rồi, bạn cứ thử bật chức năng Record macro rồi gõ công thức như trước giờ bạn vẫn gõ. Tiếp theo tắt chức năng Record macro và vào cửa sổ VBE xem nó ra code như thế nào là biết ngay ấy mà. Những công thức dài thì cứ record như vậy chứ hơi đâu mà suy nghĩ cả một mớ lùng bùng R[-6]C[15] gì gì đó cho mệt vậy.
 

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

Back
Top Bottom