làm một việc với nhiều sheet

Liên hệ QC

bj189

Thành viên mới
Tham gia
14/10/09
Bài viết
21
Được thích
0
Thân chào các bạn trên diễn đàn !
Hiện nay ,tôi đang gặp phải vấn đề là : làm cùng một việc (công thức) với lần lượt từng sheet khác nhau (25 sheet ) nhưng mà dữ liệu trong 25 sheet này thì lại khác nhau
ví dụ :
sheet1.select
cells(1,1).select
activesheet.paste

sheet2.select
cells(1,1).select
activesheet.paste
........

cùng việc như vậy với 24 sheet kia , mỗi lần sửa thì lại phải sửa cả 24 đống lệnh (từ 1-25)

các bạn có thể chỉ giúp tôi cách làm 1 lệnh rồi xử lý cho 25 sheet luôn ví dụ :

for n = 1 to 25

sheetN.select
cells(1,1).select
activesheet.paste

next n

xin cảm ơn các bạn chỉ dẫn !
 
Lần chỉnh sửa cuối:
Chưa hiểu ý bạn lắm! Nếu bạn muốn gõ công thức "=B1" vào cell A1 ở sheet1 và muốn các sheet khác cũng đều có công thức này thì chỉ việc chọn 1 lúc nhiều sheets rồi gõ vào 1 sheet bất kỳ thì ô A1 của các sheet khác đều giống vậy.
Thử xem nhé
 
Thân chào các bạn trên diễn đàn !
Hiện nay ,tôi đang gặp phải vấn đề là : làm cùng một việc (công thức) với lần lượt từng sheet khác nhau (25 sheet ) nhưng mà dữ liệu trong 25 sheet này thì lại khác nhau
ví dụ :
sheet1.select
cells(1,1).select
activesheet.paste

sheet2.select
cells(1,1).select
activesheet.paste
........

cùng việc như vậy với 24 sheet kia , mỗi lần sửa thì lại phải sửa cả 24 đống lệnh (từ 1-25)

các bạn có thể chỉ giúp tôi cách làm 1 lệnh rồi xử lý cho 25 sheet luôn ví dụ :

for n = 1 to 25

sheetN.select
cells(1,1).select
activesheet.paste

next n

xin cảm ơn các bạn chỉ dẫn !

Bạn thử xem cái "Thử" này có đúng không

Sub thu()
Dim i As Integer
For i = 1 To 24
Sheets(i).Cells(1, 1) = "Thu" & i
Next i
End Sub
 
Lần chỉnh sửa cuối:
Thân chào các bạn trên diễn đàn !
Hiện nay ,tôi đang gặp phải vấn đề là : làm cùng một việc (công thức) với lần lượt từng sheet khác nhau (25 sheet ) nhưng mà dữ liệu trong 25 sheet này thì lại khác nhau

Đứng tại sheet có cell chứa công thức cần copy, chạy cái này, nó sẽ paste cho tất cả các sheet khác tại cùng vị trí.

Bạn sửa lại code đoạn : Set Rng = [vùngmuốncopy]

PHP:
Sub CopPaste()
    Dim i As Integer, Rng As Range
    Set Rng = [A1] '<-- chỉnh lại vùng cần copy cho phù hợp
    Rng.Copy
    For i = 1 To 25
        Sheets(i).Activate
        Cells(Rng.Row, Rng.Column).PasteSpecial xlPasteAll
    Next i
    Application.CutCopyMode = False
End Sub
 
Bạn thử code này xem có đúng ý bạn không ? bạn có thể thêm hoặc bớt số sheets tuỳ ý (không nhất thiết là 25 sheets)

Mã:
Sub Copy()
    For i = 2 To Sheets.Count
      Sheets(1).UsedRange.Copy Sheets(i).Range(Sheets(1).UsedRange.Address)
    Next
End Sub
 
Bạn thử code này xem có đúng ý bạn không ? bạn có thể thêm hoặc bớt số sheets tuỳ ý (không nhất thiết là 25 sheets)

Mã:
Sub Copy()
    For i = 2 To Sheets.Count
      Sheets(1).UsedRange.Copy Sheets(i).Range(Sheets(1).UsedRange.Address)
    Next
End Sub

dữ liệu trong 25 sheet này thì lại khác nhau
Với yêu cầu trên mà dùng UsedRange liệu có được không anh???+-+-+-++-+-+-++-+-+-+
 
Cảm ơn dvu58 và các bạn khác!
cái code này đúng là cái tôi cần , excel sẽ xử lý theo thứ tự từ sheet số 1.....24 , sheet số 1 được hiểu là sheet đầu tiên bến trái tiếp theo là sheet số 2 ...

Sub thu()
Dim i As Integer
i = 1
For i = 1 To 24
Sheets(i).Cells(1, 1) = "Thu" & i
Next i
End Sub[/QUOTE]
 
Lần chỉnh sửa cuối:
Với yêu cầu trên mà dùng UsedRange liệu có được không anh???+-+-+-++-+-+-++-+-+-+

Nếu cả bảng là công thức thì được.
Nếu chỉ có Cells(1) như ví dụ hoặc một vùng nào đó liên tục là công thức thì thay UsedRange = Cells(1) hoặc địa chỉ vùng và xoá .Address ví dụ:

Mã:
Sub Copy()
    For i = 2 To Sheets.Count
      Sheets(1).[a2:a100].Copy Sheets(i).Range(Sheets(1).[a2]
    Next
End Sub
Còn nếu công thức nằm trong nhiều vùng không liên tục vd: [a2:h2], [a7:h7] thì không được kể cả code của bạn.

Tôi không hiểu bài này chỉ có Cells(1) là công thức hay còn có ô nào khác nên viết đại thôi. Ý của tôi là muốn chia sẻ với các bạn cách viết code để tuỳ biến với n Sheets và không sử dụng Pate để khỏi phải Application.CutCopyMode = False.

Nếu tác giả đưa file thật lên thì rất có thể code không phải đơn giản như thế này.
 
Còn nếu công thức nằm trong nhiều vùng không liên tục vd: [a2:h2], [a7:h7] thì không được kể cả code của bạn.

Em dùng code này khi công thức nằm trong các vùng không liên tục, với SpecialCells mình cũng không cần biết địa chỉ các ô là bao nhiêu!

PHP:
Sub CopPaste()
    Dim i As Integer, Area As Range
    On Error Resume Next
    With Cells.SpecialCells(-4123, 23)
        For Each Area In .Areas
            For i = 1 To Sheets.Count
                Area.Copy Sheets(i).Range(Area.Address)
            Next i
        Next Area
    End With
End Sub
 
Em dùng code này khi công thức nằm trong các vùng không liên tục, với SpecialCells mình cũng không cần biết địa chỉ các ô là bao nhiêu!

PHP:
Sub CopPaste()
    Dim i As Integer, Area As Range
    On Error Resume Next
    With Cells.SpecialCells(-4123, 23)
        For Each Area In .Areas
            For i = 1 To Sheets.Count
                Area.Copy Sheets(i).Range(Area.Address)
            Next i
        Next Area
    End With
End Sub

Rất hay, nhưng sao không viết là With Cells.SpecialCells(3). Bạn có thể giải thích thêm số -4123 bạn kiếm ở đâu ra vậy?
 
Rất hay, nhưng sao không viết là With Cells.SpecialCells(3). Bạn có thể giải thích thêm số -4123 bạn kiếm ở đâu ra vậy?

Hai con số -412323 em lấy trong Help của VBE 2007, không hiểu sao trong VBE 2003 không đề cập đến, tuy nhiên code vẫn chạy được trên VBE 2003 ???

attachment.php

 

File đính kèm

  • Spcells.JPG
    Spcells.JPG
    94.8 KB · Đọc: 27
Web KT
Back
Top Bottom