Các bạn giúp mình macro chép lại số sang cột B cho liền dòng để xem cho dễ, mình làm không được. Cảm ơn các bạn.
Option Explicit[b]
Sub ChepAToB()[/b]
Dim lCuoi As Long, iJ As Long
lCuoi = Range("A65432").End(xlUp).Row
For iJ = 1 To lCuoi
If Range("A" & iJ) <> "" Then _
Range("B" & Range("B65432").End(xlUp).Row + 1) = Range("A" & iJ)
Next iJ[b]
End Sub[/b]
Option Explicit
[B]Sub ChepAToB()[/B]
Dim lCuoi As Long, iJ As Long
lCuoi = Range("A65432").End(xlUp).Row
For iJ = 1 To lCuoi
If Range("A" & iJ) <> "" Then _
Range("B" & Range("B65432").End(xlUp).Row + 1) = Range("A" & iJ)
Next iJ
[B]End Sub[/B]
Sub AtoB()
Dim ra As Long, rb As Long
ra = 1
rb = 1
Do
ra = Cells(ra, 1).End(xlDown).Row
Cells(rb, 2) = Cells(ra, 1)
rb = rb + 1
If ra = 65536 Then Exit Sub
Loop
End Sub
Bác Soibien lúc nào cũng Đơn giản, gọn nhẹ, hiệu quả...ThanksSoiBien đã viết:Nếu vấn đề chỉ như ví dụ của bạn đưa thì không cần phải viết Macro đâu bạn ạ. Bạn thực hiện như thế này nhé.
Chọn cột A
Edit/Goto/Specials/Constant ok
copy
chọn ô bạn muốn copy rồi paste vào,
Vậy là bạn có được danh sách liên tục
Thân mến.
phamduylong đã viết:
[b]
Sub AtoB()[/b]
Dim ra As Long, rb As Long, lCuoi As Long, iJ As Long
Dim ThGian1 As Double, ThGian2 As Double
ra = 1: rb = 1
lCuoi = Range("A65432").End(xlUp).Row
ThGian1 = Timer
Do
ra = Cells(ra, 1).End(xlDown).Row
Cells(rb, 2) = Cells(ra, 1)
rb = rb + 1
If ra = 65536 Then Exit Do
Loop
ThGian1 = Timer - ThGian1
For iJ = 1 To lCuoi
If Range("A" & iJ) <> "" Then _
Range("B" & Range("B65432").End(xlUp).Row + 1) = Range("A" & iJ)
Next iJ
ThGian2 = Timer - ThGian1
MsgBox Str(ThGian1 / ThGian2)[b]
End Sub[/b]
' [B][COLOR="Purple"] [SIZE="4"][B]9.92345542656717E-07 [/B][/SIZE][/COLOR][/B]
Bạn thử tạo 1 file mới rồi gõ vào A1= 5, B3=5 và C1=5 rồi dùng phím Ctrl chọn 3 cell này và copy thử xem...phamnhukhang đã viết:Em làm được mà bác Tuấn. copy thủ công thôi
Em chỉ làm được khi các số được đánh cách quãng trên 1 cột, khi chọn dữ liệu trên nhiều cột thì em cũng bị như bác. Có lẽ Bill không cho copy trong trường hợp này cũng đúng, vì khi bác pates vào một ô trên một cột sẽ mất đi tính quy luật của dữ liệu (thứ tự chẳng hạn). Em nghĩ như thế không biết có đúng không?anhtuan1066 đã viết:Thì tôi biết cách của Soibien.. nhưng quan trọng là tôi ko thể copy dc, chăng hiểu tại sao? Này nhé.. khi Ctrl + G gì gì đó, nó sẽ bôi đen các cell ta cần.. giờ thì bấm Ctrl + C đễ copy, đúng ko? Đến bước này thì.. báo lỗi như tôi nói ở trên, vì thế mà tôi nhờ bạn kiểm tra hộ trên máy tính bạn có hiện tượng này ko?
Test bằng cách gỏ vào A1 số 5, B3 số 5 và C1 số 5, sau đó copy 3 cell này giống như Soibien chỉ.. thử có dc ko?
ANH TUẤN
anhtuan1066 đã viết:Uh... đúng... nên tôi mới nói giả sử trong bảng tính cụ thể thì chưa chắc dùng dc, vì đâu phải chỉ có 1 cột A duy nhất có số chứ, đúng ko? Có lẽ Record macro trong trường hợp đơn giản, sau đó sửa lại cho thích hợp...
ANH TUẤN
Đối với mình đây là 1 gợi í quan trọng, vì tạo được macro ver 2.00, như sau:phamnhukhang đã viết:Chắc chắn là dùng được vì trước khi thực hiện Edit/Goto/Specials/Constant mình phải chọn cột A trước. Vấn đề là yêu cầu của từng bài toán cụ thể mới là quan trọng.
[b]Sub CopyAToB()[/b]
Dim Timer_ As Double
Timer_ = Timer
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.Copy Destination:=Range("B" & Range("B65432").End(xlUp).Row + 1)
MsgBox Str(Timer - Timer_)[b]
End Sub[/b]
Bác có thể tạo một danh sách bao gồm các mã số cho trước. sau đó tạo Datavalidition\list . Dữ liệu nguồn bác có thể dùng name hoặc tham chiếu trực tiệp tới vùng dữ liệu chứa danh sach cho trước đã tạo. Bỏ đánh dấu tại ô Ignore blank. Như vậy chỉ những mã số có trong danh sach cho trước mới được chấp nhận. Bác có thể đưa thông báo gì tùy thích.nokiano258vn đã viết:Cột A tôi dùng để nhập mã số, tôi sẽ nhập lần lượt từ trên xuống. Tôi muốn khi nhập sai mã số mà muốn sửa lại thì xuất hiện hộp thoại yêu cầu xác nhận lại và phải nhập mật khẩu để tránh tình trạng vô tình bị sửa mã số???