copy dữ liệu sang sheet khác (3 người xem)

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

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

black0

Thành viên mới
Tham gia
25/10/11
Bài viết
17
Được thích
1
Xin mọi người giúp đỡ!
Chẳng hạn ở sheet1 em đã dùng hàm để tính toán và cho kết quả. em muốn lấy kết quả từ sheet1 vừa tính được sang sheet2 mà không phải nhập lại dữ liệu. Copy theo cách thông thường thì bị lối vậy phải làm sao?
 
Xin mọi người giúp đỡ!
Chẳng hạn ở sheet1 em đã dùng hàm để tính toán và cho kết quả. em muốn lấy kết quả từ sheet1 vừa tính được sang sheet2 mà không phải nhập lại dữ liệu. Copy theo cách thông thường thì bị lối vậy phải làm sao?
Vấn đề đơn giản
nếu bạn sử dụng Paste Special/Values
 
Nếu bạn sử dụng hàm trong excell thì không thể copy sang sheet khác vì nó sẽ bị mã hóa công thức. để có được dữ liệu ở sheet 1 sang sheet 2 mà không cần nhập lại dữ liệu thì bạn làm như sau:
Cách 1: bôi đen toàm bộ chỗ cần coppy nhấn chuột phải- coppy-nhấn chuột phải chọn paste special-rồi paste vào sheet mới.
Cách 2: Ấn phím ctrl + chuột trái vào sheet 1 và giữ phím rồi kéo ra thanh công cụ bên cạnh thành sheet 1(2) thả tay ra thế là được tất cả giữ liệu như sheet ban đầu.
Chúc bạn thành công nha
 
Ban bấm chuột phải vào sheet cần copy rồi thì sẽ xuất hiện 1 bảng. Bạn bấm chọn vào ô create a copy, bấm chọn vào sheet cần chuyển, ok là xong
 
Cách mọi người chỉ cũng tốt nhưng nó làm mất công thức hết như vậy khi mình muốn thay đổi dữ liệu trên sheet1 thì ko còn chính xác nữa. Còn cách copy sheet thì mất thời gian tạo lại cái bảng tổng hợp (sheet2). Còn cách nào khác ko ah?
 
Bạn xem như thế này có đúng ý của bạn không nhé
Mã:
Option Explicit

Sub copy2()
    With Sheets("Sheet2")
        .Cells(65536, 1).End(xlUp).Offset(1, 0).Value = Sheets("Sheet1").Range("C2").Value
    End With
End Sub
Chúc thành công
Cách mọi người chỉ cũng tốt nhưng nó làm mất công thức hết như vậy khi mình muốn thay đổi dữ liệu trên sheet1 thì ko còn chính xác nữa. Còn cách copy sheet thì mất thời gian tạo lại cái bảng tổng hợp (sheet2). Còn cách nào khác ko ah?
 
Cho Mình hỏi có cách nào mình copy co lựa chọn các cột bên sheet 1 qua các cột cố định bên Sheet2. Ví dụ: như Sheet 2 là hóa đơn để In ra có các cột mahang, tenhang, đvt, soluong, dongia, giamgia, thanhtien
 
Cho Mình hỏi có cách nào mình copy co lựa chọn các cột bên sheet 1 qua các cột cố định bên Sheet2. Ví dụ: như Sheet 2 là hóa đơn để In ra có các cột mahang, tenhang, đvt, soluong, dongia, giamgia, thanhtien
Hỏi như kiểu bạn thì chẳng ai hiểu lấy cái gì ở đâu và gán nó chỗ nào, của sheet nào?
Hỏi về hóa đơn là một chủ đề khác nó có liên quan đến Macro. Vì vậy, bạn nên mở Topic khác trong Box Lập trình với Excel và đính kèm File sẽ được nhiều người trợ giúp hơn.
 
Lần chỉnh sửa cuối:
Hỏi như kiểu bạn thì chẳng ai hiểu lấy cái gì ở đâu và gán nó chỗ nào, của sheet nào?
Hỏi về hóa đơn là một chủ đề khác. Vì vậy, bạn nên mở Topic khác và đính kèm File sẽ được nhiều người trợ giúp hơn.
Trước hết mình rất cảm ơn bạn đã trả lời bài viết của mình. Ý mình muốn hỏi là có thể copy các cột ko theo thứ tự từ sheet 1 qua sheet 2. có điều kiện ví dụ: Mình tạo nút lệnh khi mình rõ bên sheet 2 mã NVA01 thì sẽ copy tất cả các cột của NVA01 từ Sheet 1 sang Sheet 2
 
Trước hết mình rất cảm ơn bạn đã trả lời bài viết của mình. Ý mình muốn hỏi là có thể copy các cột ko theo thứ tự từ sheet 1 qua sheet 2. có điều kiện ví dụ: Mình tạo nút lệnh khi mình rõ bên sheet 2 mã NVA01 thì sẽ copy tất cả các cột của NVA01 từ Sheet 1 sang Sheet 2
Bài 8 tôi nêu vầy:
Nó có liên quan đến Macro. Vì vậy, bạn nên mở Topic khác trong Box Lập trình với Excel và đính kèm File sẽ được nhiều người trợ giúp hơn.
Có nghĩa là phải đính kèm File thì người ta mới hiểu là copy cái gì, ở đâu, nó có bao nhiêu cột?
Bạn tham khảo File trong bài 16 của Topic sau (nó tương tự cái bạn cần, chỉ khác vều cấu trúc).
https://www.giaiphapexcel.com/diendan/threads/nhờ-mọi-người-giúp-tự-thêm-dòng-và-lấy-dữ-liệu.136426/
 
Bài 8 tôi nêu vầy:
Nó có liên quan đến Macro. Vì vậy, bạn nên mở Topic khác trong Box Lập trình với Excel và đính kèm File sẽ được nhiều người trợ giúp hơn.
Có nghĩa là phải đính kèm File thì người ta mới hiểu là copy cái gì, ở đâu, nó có bao nhiêu cột?
Bạn tham khảo File trong bài 16 của Topic sau (nó tương tự cái bạn cần, chỉ khác vều cấu trúc).
https://www.giaiphapexcel.com/diendan/threads/nhờ-mọi-người-giúp-tự-thêm-dòng-và-lấy-dữ-liệu.136426/
Mình thấy cái mình nói nó cũng gần giống với cái bài này của bản. Bây giờ mình đưa file lên bạn xem giúp mình nhé. Cảm ơn
 

File đính kèm

Mình thấy cái mình nói nó cũng gần giống với cái bài này của bản. Bây giờ mình đưa file lên bạn xem giúp mình nhé. Cảm ơn
Thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
End Sub
 
Thử:
PHP:
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
      
Rất cảm ơn bạn đã nhiệt tình giúp đỡ. Bạn có thể giải thích đọan này giúp mình được không bạn
. Với lại mình múôn thêm cái tiêu đề bên dứơi như ngày.... tháng... năm.... Nguời bán, nguời mua, nhân viên bán hàng. Mình có thể làm sao khi dữ liệu được thay đổi thì không ảnh huởng đến cái tiêu đề bên dưới
 
Lần chỉnh sửa cuối:
. Với lại mình múôn thêm cái tiêu đề bên dứơi như ngày.... tháng... năm.... Nguời bán, nguời mua, nhân viên bán hàng. Mình có thể làm sao khi dữ liệu được thay đổi thì không ảnh huởng đến cái tiêu đề bên dưới
Vậy bạn xem code dưới đây:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 13
            LR = Range("A5000").End(xlUp).Row
            Range("F" & LR + 2) = Sheets("thongtin").Range("B2")
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
End Sub
[/ph]
 
Vậy bạn xem code dưới đây:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 13
            LR = Range("A5000").End(xlUp).Row
            Range("F" & LR + 2) = Sheets("thongtin").Range("B2")
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
End Sub
[/ph]
Mình Rất...rất vô cùng cảm ơn bạn. Nhưng bạn có thể làm cho mục ngày tháng năm của hiện tại và tiêu đề người bán hàng chỉ in đậm khi xuất hiện ở dòng đó còn nếu xuât hiện dòng khác thì dòng khác in đậm dòng cũ trở lại bình thường dùm mình luôn được không bạn. Và khi nhấn nút in chỉ in dòng có dữ liệu thôi.
 
Lần chỉnh sửa cuối:
Mình Rất...rất vô cùng cảm ơn bạn. Nhưng bạn có thể làm cho mục ngày tháng năm của hiện tại dùm mình luôn được không.
Thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 14
            LR = Range("A5000").End(xlUp).Row
            Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
            Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
           
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
End Sub
 
Lần chỉnh sửa cuối:
bài viết rất hay cám ơn bạn
 
Thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 14
            LR = Range("A5000").End(xlUp).Row
            Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
            Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
          
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
End Sub
Mình cảm ơn bạn. Nhưng mình có 3 vấn đề thắc mắc nhờ bạn giúp:
- Nhưng bạn có thể làm cho mục ngày tháng năm mặc nhiên là Now().
- Mình chưa hiểu đọan code:
Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
Khác gì nhiều so với đọan code trên không bạn.
- Tiêu đề người bán hàng chỉ in đậm khi xuất hiện ở dòng đó còn nếu xuât hiện dòng khác thì dòng khác in đậm dòng cũ trở lại bình thường dùm mình luôn được không bạn. Và khi nhấn nút in chỉ in dòng có dữ liệu thôi.
 
Mình cảm ơn bạn. Nhưng mình có 3 vấn đề thắc mắc nhờ bạn giúp:
- Nhưng bạn có thể làm cho mục ngày tháng năm mặc nhiên là Now().
- Mình chưa hiểu đọan code:
Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
Khác gì nhiều so với đọan code trên không bạn.
- Tiêu đề người bán hàng chỉ in đậm khi xuất hiện ở dòng đó còn nếu xuât hiện dòng khác thì dòng khác in đậm dòng cũ trở lại bình thường dùm mình luôn được không bạn. Và khi nhấn nút in chỉ in dòng có dữ liệu thôi.
Bạn xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 14
            LR = Range("A5000").End(xlUp).Row
            Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
            Range("G" & LR + 2).Font.Italic = True
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
            Range("G" & LR + 3).Font.Bold = True
            Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
    Range("A1:I" & LR + 8).Select
    'Range("A1:I" & LR + 8).PrintOut
End Sub
 

File đính kèm

Bạn xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a, b(1 To 1000, 1 To 9), dk, i&, k&, LR
    If Target.Address = "$G$3" Then
        dk = [G3].Value
        a = Sheets("BanHang").Range("A4", Sheets(1).Range("A6000").End(3)).Resize(, 31)
        Application.ScreenUpdating = False
        For i = 1 To UBound(a)
            If a(i, 1) = dk And dk <> Empty Then
                k = k + 1
                b(k, 1) = k
                b(k, 2) = a(i, 1): b(k, 3) = a(i, 2)
                b(k, 4) = a(i, 8): b(k, 5) = a(i, 9)
                b(k, 6) = a(i, 5): b(k, 7) = a(i, 11)
                b(k, 8) = a(i, 13): b(k, 9) = a(i, 16)
            End If
        Next
        If k Then
            Range("A11:I1000").ClearContents
            Range("A11").Resize(k, 9) = b
            Range("A11:I65000").Borders.LineStyle = xlNone
            Range("A11", Range("A65000").End(3)).Resize(, 9).Borders.LineStyle = 1
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Name = "Times New Roman"
            Range("A11", Range("A65000").End(3)).Resize(, 9).Font.Size = 14
            LR = Range("A5000").End(xlUp).Row
            Range("G" & LR + 2) = Sheets("thongtin").Range("B1")
            Range("G" & LR + 2).Font.Italic = True
            Range("G" & LR + 3) = Sheets("thongtin").Range("B3")
            Range("G" & LR + 3).Font.Bold = True
            Range("G" & LR + 7) = Sheets("thongtin").Range("B4")
        Else
            Range("A11:I65000").Borders.LineStyle = xlNone
        End If
    End If
    Range("A1:I" & LR + 8).Select
    'Range("A1:I" & LR + 8).PrintOut
End Sub
Cảm ơn bạn giỏi quá. Mình mới tập tành làm nên chưa rành lắm
 
Web KT

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

Back
Top Bottom