matran25251325
Thành viên tiêu biểu

- Tham gia
- 13/1/11
- Bài viết
- 424
- Được thích
- 39
Đề phòng trường hợp các mã lặp lại, mình sử dụng cột phụ để tham chiếu. Vùng bôi vàng trong sheet Ngang là vùng công thức lấy giá trị truy tìm từ sheet Doc.Trong sheet1 em có dữ liệu kiểu hàng ngang, nay em hỏi có thể viết code nào chuyển sang thành dữ liệu hàng dọc như sheet2 được không? Mong các anh chi, thầy cô giúp.
Bỏ bớt mấy cái Merge Cells lu bu đị.Trong sheet1 em có dữ liệu kiểu hàng ngang, nay em hỏi có thể viết code nào chuyển sang thành dữ liệu hàng dọc như sheet2 được không? Mong các anh chi, thầy cô giúp.
Công thức ở sheet1, code chỉ lấy số liệu qua sheet GPE thôi, đâu có đem công thức quaBác Bate hình như cũng là dân xây dựng thì phải? Bác sửa lại giúp em vấn đề này với:
+ Nếu sheet1 em xóa bớt dữ liệu 2 hàng thì bên sheet GPE không xóa dữ liệu và cập nhập lại.
+ Sao em không thấy thủ tục để hiện công thức tính ở sheet GPE nhỉ.
Muốn có công thức sang luôn thì code dài thoòng luôn:Em mới úp lại file bài 6, bác xem chỉnh giùm em tí code. Hic hàng chi không thấy có công thức, vậy có cách nào thể hiện các phép tính không bác.
Code thì oke rồi bác, nhưng về mặt công thức ở đoạn này thì chưa đúng với tỉnh em lắm:Muốn có công thức sang luôn thì code dài thoòng luôn:
[GPECODE=vb]Public Sub GPE()
Dim sArr(), tArr(), dArr(), I As Long, J As Long, K As Long, TieuDe()
With Sheet1
sArr = .Range(.[A10], .[A65536].End(xlUp)).Resize(, 18).Value
TieuDe = .[A8:R8].Value
End With
ReDim dArr(1 To UBound(sArr, 1) * 10, 1 To 6)
tArr = Sheets("GPE").[A5:I5].Value
For I = 1 To UBound(sArr, 1)
If sArr(I, 3) = "" Then
K = K + 1
dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
Else
K = K + 1
dArr(K, 1) = sArr(I, 1)
dArr(K, 2) = sArr(I, 2)
dArr(K, 3) = sArr(I, 3)
For J = 4 To 6
K = K + 1
dArr(K, 2) = TieuDe(1, J)
dArr(K, 4) = sArr(I, J)
dArr(K, 5) = sArr(I, J + 3)
dArr(K, 6) = "=RC[-2]*RC[-1]"
Next J
K = K + 1
dArr(K, 2) = TieuDe(1, 13)
dArr(K, 6) = "=SUM(R[-3]C:R[-1]C)*2%"
K = K + 1
dArr(K, 2) = TieuDe(1, 14)
dArr(K, 6) = "=SUM(R[-4]C:R[-1]C)"
K = K + 1
dArr(K, 2) = TieuDe(1, 15)
dArr(K, 6) = "=R[-1]C * 5.5%"
K = K + 1
dArr(K, 2) = TieuDe(1, 16)
dArr(K, 6) = "=R[-2]C + R[-1]C"
K = K + 1
dArr(K, 2) = TieuDe(1, 17)
dArr(K, 6) = "=R[-1]C * 5.5%"
K = K + 1
dArr(K, 2) = TieuDe(1, 18)
dArr(K, 6) = "=R[-2]C + R[-1]C"
End If
Next I
Sheets("GPE").[A8:F10000].ClearContents
Sheets("GPE").[A8:F10000].Borders.LineStyle = xlNone
With Sheets("GPE").[A8].Resize(K, 6)
.Value = dArr
.Borders.LineStyle = xlContinuous
End With
End Sub[/GPECODE]
Cảm ơn bác manh_linh rất nhiều, em thấy dùng hàm và code thì độ chính xác như nhau thôi, nhưng nếu dữ liệu ít thì không nói, nhưng khi dữ liệu lên 40 đên 50 dòng thì dùng hàm phải copy và pas vậy cũng hơi lâu và thực sự nhìn rối cả mắt. Cái này theo suy nghĩ của em thôi chứ thực sự cũng cảm ơn bác rất nhiệt tình.Không cần code đâu các bác ơi! Dùng hàm vẫn được mà, tính cơ động cao hơn!!
Chịu khó lập hàm cho 6 cell đầu, sau đó fillter theo vật liệu, nhân công, máy rồi copy paste xuống, cũng nhanh thôi!!! Các mã hiệu và tên công việc cũng dùng hàm cho chính xác.
Nhanh hay chậm do kỹ năng thôi bạn ơi!! Code thường có tính cố hữu, nghĩa là một đoạn code thường chỉ dùng cho 1 kiểu kết cấu dữ liệu. Dùng hàm tính linh động cao hơn, và ưu điểm nhất là khi dữ liệu nguồn của bạn thay đổi, bạn không cần làm gì nữa, nếu dùng code bạn phải chạy lại code, mà quên béng cái là tỏi rồi!!! 40-50 dòng chứ 1000 dòng thì mình cũng chỉ mất không đến 1 phút là copy và paste xong hết dữ liệu!!Cảm ơn bác manh_linh rất nhiều, em thấy dùng hàm và code thì độ chính xác như nhau thôi, nhưng nếu dữ liệu ít thì không nói, nhưng khi dữ liệu lên 40 đên 50 dòng thì dùng hàm phải copy và pas vậy cũng hơi lâu và thực sự nhìn rối cả mắt. Cái này theo suy nghĩ của em thôi chứ thực sự cũng cảm ơn bác rất nhiệt tình.
Vì ý em là chuyển dữ liệu ngang sang dọc, nên em cũng sẽ tham khảo 2 cách Hàm của bác và Code của bác BaTe. Cái nào nhanh và tiện hơn thì em sẽ ứng dụng. Thank bácNhanh hay chậm do kỹ năng thôi bạn ơi!! Code thường có tính cố hữu, nghĩa là một đoạn code thường chỉ dùng cho 1 kiểu kết cấu dữ liệu. Dùng hàm tính linh động cao hơn, và ưu điểm nhất là khi dữ liệu nguồn của bạn thay đổi, bạn không cần làm gì nữa, nếu dùng code bạn phải chạy lại code, mà quên béng cái là tỏi rồi!!! 40-50 dòng chứ 1000 dòng thì mình cũng chỉ mất không đến 1 phút là copy và paste xong hết dữ liệu!!