Có thể bỏ qua công đoạn em tô đỏ cũng chẳng có vấn đề gì sư phụ à!(*) Trên trang tính tại cột kề với dữ liều nguồn ta lập hàm RAND() ;
Sau đó biến nó thành dữ liệu bằng cách Copy & paste special - Value
Xếp 2 cột này theo cột số ngẫu
Copy đến cột đích là được.
(*) Nếu anh79_ct cần code thì báo mình biết nha!
Chờ tin bạn!
Có thể bỏ qua công đoạn em tô đỏ cũng chẳng có vấn đề gì sư phụ à!
Option Explicit
Sub XaoCot()
Dim Color_ As Byte
With [B1].Interior
If .ColorIndex < 34 Or .ColorIndex > 41 Then Color_ = 34 Else Color_ = .ColorIndex
End With
If Color_ < 34 Or Color_ > 41 Then Color_ = 35
Columns("A:A").Insert Shift:=xlToRight
[B1].Value = "RAND": [B2].FormulaR1C1 = "=RAND()"
[B2].AutoFill Destination:=Range("B2:B" & [C65500].End(xlUp).Row), Type:=xlFillDefault
Columns("B:C").Sort Key1:=[B2], Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1
Columns("B:B").Delete
[B1].Interior.ColorIndex = 1 + Color_
End Sub
bác ơi code này dùng cho 1 cột, bác có thể thay đổi để dùng trong 1 vùng không, em cảm ơn ạBạn thử nghiệm với file này
PHP:Option Explicit Sub XaoCot() Dim Color_ As Byte With [B1].Interior If .ColorIndex < 34 Or .ColorIndex > 41 Then Color_ = 34 Else Color_ = .ColorIndex End With If Color_ < 34 Or Color_ > 41 Then Color_ = 35 Columns("A:A").Insert Shift:=xlToRight [B1].Value = "RAND": [B2].FormulaR1C1 = "=RAND()" [B2].AutoFill Destination:=Range("B2:B" & [C65500].End(xlUp).Row), Type:=xlFillDefault Columns("B:C").Sort Key1:=[B2], Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1 Columns("B:B").Delete [B1].Interior.ColorIndex = 1 + Color_ End Sub
dạ, do mới học em chưa hiểu ý bác ntn ạ. dữ liệu của em có 90 hàng và 250 cột gồm cả chữ và số bác ạThì cách dễ mà ai cũng nghĩ ra là: Bạn thêm bước ghi hết dữ liệu vùng đó lên 1 cột trống nào đó & tiếp tục thôi.
Ông bà xưa có câu "Trăm nghe không bằng một thấy".dạ, do mới học em chưa hiểu ý bác ntn ạ. dữ liệu của em có 90 hàng và 250 cột gồm cả chữ và số bác ạ
Thưa Chú ! vấn đề Cháu nhờ giúp chính là vấn đề được nêu trong topic, có file đi kèm ở đó. Thành viên SA_DQ có chỉ cho cách làm bằng code rồi Chú ah. Trên cơ sở đó cháu muốm bác ấy chỉ cách để làm trên một vùng dữ liệu, bác ấy chỉ "Thì cách dễ mà ai cũng nghĩ ra là: Bạn thêm bước ghi hết dữ liệu vùng đó lên 1 cột trống nào đó & tiếp tục thôi. ". do không hiểu nên cháu hỏi lại bác ấy thôi, còn vấn đề này chắc chắn bác SA_DQ đã rõ vấn đề Cháu nhờ rồi bạn ạ. Cháu sẽ rút kinh nghiệm.Ông bà xưa có câu "Trăm nghe không bằng một thấy".
Nghe bạn nêu vấn đề chứ có thấy cái gì đâu?
Ít ra bạn cũng nên đính kèm File với 1 sheet có dữ liệu của 90 hàng và 250 cột (có chữ và số).
Muốn làm thế nào thì có 1 sheet kết quả để người giúp họ nghía xem có hiểu hay không rồi mới tính đến chuyện giúp.
Nếu không hiểu mà giúp bừa thì lại phát sinh thế này:
- Anh không hiểu ý em rồi.
- Anh ơi em muốn thế này.
- Anh ơi em muốn thế kia.
- Anh ơi em phát sinh thêm cái này.
........v....v.............
Rút kinh nghiệm bài viết này (cầm đèn chạy trước ô tô), bị dí chạy thục mạng, đây là link bài viết:
Các bạn cho mình hỏi làm sao xóa được số trùng nhau
Sub TraoDuLieu1Vung()
Dim Rng As Range, Cls As Range
Dim Rws As Long, Col As Integer, J As Long, W As Long
1 With Sheet1 'Gôm Du Liêu Vô Mang '
Set Rng = .[B2].CurrentRegion.Offset(1)
Rws = Rng.Rows.Count: Col = Rng.Columns.Count
ReDim Arr(1 To Rws * Col, 1 To 1)
For Each Cls In Rng
If Cls.Value <> "" Then
W = W + 1: Arr(W, 1) = Cls.Value
End If
Next Cls
End With
2 With Sheet2
.[B1].Value = "Rand()": .[C1].Value = "GPE.COM "
.[C2].Resize(W).Value = Arr()
.Range("B2").FormulaR1C1 = "=RAND()"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B" & W), Type:=xlFillDefault
.Select
.Columns("B:C").Select
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("B2:B" & W + 1) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("B1:C" & W + 1): .Header = xlYes
.MatchCase = False: .Orientation = xlTopToBottom
.SortMethod = xlPinYin: .Apply
End With
Arr() = .[C2].Resize(W + 1).Value
End With
W = 0
3 With Sheet1
For Each Cls In Rng
If Cls.Value <> "" Then
W = W + 1: Cls.Offset(, 260).Value = Arr(W, 1) '!!! '
End If
Next Cls
End With
End Sub