Chuyển số liệu trong số hiệu tài khoản của nhiều công ty về 1 bảng chung đồng nhất

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vuthaiha90

Thành viên mới
Tham gia
14/6/09
Bài viết
36
Được thích
0
Giới tính
Nam
Em chào các bác ạ. Em có 1 file ví dụ như này. có nhiều công ty, em lấy tạm ra 4 ông, trên bảng cân đối thì mỗi công ty các tài khoản nào có số liệu thì hiển thị, không thì thôi. Em tạo ra sheet "Dich", nơi chứa hết các tài khoản. Mục đích là tìm 2 điều kiện, 1 là theo công ty và 2 là theo tài khoản, có số liệu thì paste tương ứng sang sheet "Dich", không thì để 0. Để đồng nhất về dòng, em có khai thác số liệu, + - * / làm công thức thì cũng đồng nhất dòng, dễ tạo công thức tính các chỉ tiêu. Cho em hỏi cái này làm bằng công thức được không, hay phải viết code, có bác nào có gặp trường hợp, mục đích tương tự có thể giúp em không ạ, em cảm ơn nhiều ạ
 

File đính kèm

  • test2.xlsm
    239.3 KB · Đọc: 8
B3 =IFERROR(VLOOKUP(TEXT($A3,"@"),OFFSET(Nguon!$A$3,0,MATCH(Dich!B$1,Nguon!$B$1:$L$1,0)-1,300,3),IF(B$2="Nợ",2,3),0),0)
C3 =IFERROR(VLOOKUP(TEXT($A3,"@"),OFFSET(Nguon!$A$3,0,MATCH(Dich!B$1,Nguon!$B$1:$L$1,0)-1,300,3),IF(C$2="Nợ",2,3),0),0)
(copy công thức từ B3 qua C3 thì được, không copy ô)
tô cùng lúc B3:C3, fill down
copy cùng lúc 2 cột B, C, paste cho 6 cột còn lại
 
=IFERROR(VLOOKUP(TEXT($A3,"@"),OFFSET(Nguon!$A$3,0,MATCH(Dich!B$1,Nguon!$B$1:$L$1,0)-1,300,3),IF(C$2="Nợ",2,3),0),0)
Dạ em cảm ơn trước ạ, cho em hỏi thêm là em làm bị sai ở đâu mà cột Nợ có công ty 4 chả có số liệu: em copy riêng rẽ 2 công thức ở b3 và c3, xong bao b3:c3 fill dọc và ngang; công ty 2-3 thì hiện, mà 4 thì trắng
 

File đính kèm

  • test2x.xlsm
    277.6 KB · Đọc: 4
Dạ em cảm ơn trước ạ, cho em hỏi thêm là em làm bị sai ở đâu mà cột Nợ có công ty 4 chả có số liệu: em copy riêng rẽ 2 công thức ở b3 và c3, xong bao b3:c3 fill dọc và ngang; công ty 2-3 thì hiện, mà 4 thì trắng
Em xin lỗi, mắt kèm nhèm. 1 bảng là Cong ty 4, 1 bảng là Cong ty4, nên nó không ra. Em cảm ơn bác ạ
 
Em chào các bác ạ. Em có 1 file ví dụ như này. có nhiều công ty, em lấy tạm ra 4 ông, trên bảng cân đối thì mỗi công ty các tài khoản nào có số liệu thì hiển thị, không thì thôi. Em tạo ra sheet "Dich", nơi chứa hết các tài khoản. Mục đích là tìm 2 điều kiện, 1 là theo công ty và 2 là theo tài khoản, có số liệu thì paste tương ứng sang sheet "Dich", không thì để 0. Để đồng nhất về dòng, em có khai thác số liệu, + - * / làm công thức thì cũng đồng nhất dòng, dễ tạo công thức tính các chỉ tiêu. Cho em hỏi cái này làm bằng công thức được không, hay phải viết code, có bác nào có gặp trường hợp, mục đích tương tự có thể giúp em không ạ, em cảm ơn nhiều ạ
Nếu thích dùng bằng VBA thì thử tham khảo code sau;
Mã:
Option Explicit

Sub VuThaiHa()
Dim i&, j&, Lr&, LrD&, Col&, ColD&, t&, k&
Dim ArrN(), ArrD(), Res(), Rng As Range
Dim Sh As Worksheet, Ws As Worksheet
Dim Dic As Object, Key, Temp
Set Sh = Sheets("Nguon")
Set Rng = Sh.Range("A3").CurrentRegion
Lr = Rng.Rows.Count
Col = Rng.Columns.Count
ArrN = Sh.Range(Sh.Cells(3, 1), Sh.Cells(Lr, Col)).Value
Set Ws = Sheets("Dich")
LrD = Ws.Cells(Rows.Count, 1).End(xlUp).Row
ColD = Ws.Range("A2").End(xlToRight).Column
ArrD = Ws.Range(Ws.Cells(3, 1), Ws.Cells(LrD, 1)).Value2
Set Dic = CreateObject("Scripting.Dictionary")
ReDim Res(1 To UBound(ArrD), 1 To ColD - 1)
For i = 1 To UBound(ArrD)
    Key = ArrD(i, 1)
    If Not Dic.Exists(Key) Then Dic.Add (Key), i
Next i
For j = 1 To UBound(ArrN, 2) Step 3
    t = t + 1: k = t * 2 - 1
    For i = 1 To UBound(ArrN)
        Temp = ArrN(i, j) * 1
        If Dic.Exists(Temp) Then
            Res(Dic.Item(Temp), k) = ArrN(i, j + 1)
            Res(Dic.Item(Temp), k + 1) = ArrN(i, j + 2)
        End If
Next i
Next j
If t Then
    Ws.Range("B3").Resize(10000, ColD).ClearContents
    Ws.Range("B3").Resize(UBound(ArrD), k) = Res
End If
Set Dic = Nothing
MsgBox "Done"
End Sub
 

File đính kèm

  • test2.xlsm
    254 KB · Đọc: 5
Web KT
Back
Top Bottom