Cho em hỏi về code nghịch đảo 1 cột

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

bienda

Thành viên chính thức
Tham gia
2/1/09
Bài viết
50
Được thích
3
Ví dụ em có 1 cột các chữ số hoặc các số hạng không theo thứ tự gì cả
Bây giờ em muốn nghịch đảo cột đó
giá trị cuối thành giá trị đầu và ngược lại
Các đại ca cho em xin cái code, em viết mãi mà chưa được, em mới học code**~**
em cảm ơn trước
 
-Nửa đêm rùi.Thôi vui tý vậy
 

File đính kèm

Upvote 0
Bạn nói lại cho rõ hơn đi: Đảo trong từng ô hay đảo ô đầu thành cuối
 
Upvote 0
àh nếu em muốn chọn 1 cột bất kì trên sheet và hóan đổi nó ngay cột bên cạnh thì em phải làm thế nào???
Mong bác giúp đỡ
 
Upvote 0
Bạn trả lời muộn, giờ thấy bài của bạn có nội dung hơi khác. Mình đã viết 2 code trong file bạn tham khảo và vận dụng nha.
 

File đính kèm

Upvote 0
Mình chỉ bạn cách chuối nhất, bạn thử sức xem sao

àh nếu em muốn chọn 1 cột bất kì trên sheet và hóan đổi nó ngay cột bên cạnh thì em phải làm thế nào???
Mong bác giúp đỡ

Tìm hàng/dòng cuối của cột gán vô 1 biến (như eRw) bằng fương thức End(XlUp)

Tìm hàng/dòng trên cùng của cột khảo sát có DL (dữ liệu); Để ăn chắc, mặc bền ta thử đến ô đầu tiên của cột;
Nếu ô này có DL thì ta may mắn & lấy nó làm ô đầu tiên của vùng
Bằng không thì từ ô này ta xài End(xlDown) để đến ô đầu tiên có DL

Gán vùng này vô biến & đếm số ô trong vùng

Xây 1 vòng lặp từ 1 cho đến số ô của vùng DL

Trong vòng lặp này ta gán trị chứa trong ô cuối cho ô liền kề bên fải với ô đầu tiên.

Bạn thử đi, sẽ rất vui thú khi bạn đạt 1 kết quả nào đó, như ta đẻ ra được đứa con tinh thần mang dòng họ ta vậy!

Chúc ngày tốt lành với mọi người, trong đó có bạn & tôi
 
Upvote 0
Tìm hàng/dòng cuối của cột gán vô 1 biến (như eRw) bằng fương thức End(XlUp)

Tìm hàng/dòng trên cùng của cột khảo sát có DL (dữ liệu); Để ăn chắc, mặc bền ta thử đến ô đầu tiên của cột;
Nếu ô này có DL thì ta may mắn & lấy nó làm ô đầu tiên của vùng
Bằng không thì từ ô này ta xài End(xlDown) để đến ô đầu tiên có DL

Gán vùng này vô biến & đếm số ô trong vùng

Xây 1 vòng lặp từ 1 cho đến số ô của vùng DL

Trong vòng lặp này ta gán trị chứa trong ô cuối cho ô liền kề bên fải với ô đầu tiên.

Bạn thử đi, sẽ rất vui thú khi bạn đạt 1 kết quả nào đó, như ta đẻ ra được đứa con tinh thần mang dòng họ ta vậy!

Chúc ngày tốt lành với mọi người, trong đó có bạn & tôi
-Bác đó nói đúng đó.Ngày trước cũng đi hỏi bác SA_DQ và rồi cũng lập được 1 code chạy tương đương lúc đó sướng lắm
--=0)(&&@@/-*+/
 
Upvote 0
Cách của bác HYen17 hơi lãng phí 1/2 vòng lặp. Khi gán cuối nguồn về đầu đích thì đồng thời ta cũng gán luôn đầu nguồn về cuối đích. Ta chỉ thêm 1 dòng nếu số phần tử của vùng lẻ thì lấy phần tử chính giữa sang là xong. Hoặc đơn giản là ta gán phần tử Int(Số phần tử/2)+1 sang trước, nếu phần tử chẵn thì nó bị đè đi.
Hơn nữa, trong bài của em cũng đã áp dụng : Sử lý trên mảng nhanh hơn nhiều so với sử lý trên vùng. Ta sử lý trên mảng xong rồi dán xuống vùng là xong. Em đã làm thế này bác ạ:

1/Gán vùng dữ liệu vào mảng.
2/Thực hiện 1/2 vòng lặp trên mảng: Nhấc thằng đầu ra cạnh-->Chuyển thằng cuối về đầu--> Xếp thằng bên cạnh vào cuối..Next...Next....
3/Gán mảng xuống vùng

Tiếp nữa, nếu xác định chặt vùng nguồn theo cách của bác HYen17 e không ổn vì rất có thể nguồn là dữ liệu trống. Ta cứ đưa ra giải pháp còn vùng nào thì tuỳ người sử dụng
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này dùng code thì ôi thôi hàng đóng cách
Còn cách của tôi là:
- Tạo 1 cột STT ở bên cạnh dữ liệu
- Sort 2 cột theo chiều giảm dần của STT
Xong!
 
Upvote 0
các bác có thể cho em cái code không ạ
Nói thế này em tù mù quá
Em mới học vba lúc đầu cứ nghĩ cái này đơn giản
Ai ngờ cũng củ khoai ghê
Dù sao cũng cảm ơn các bác
 
Upvote 0
Thôi thì mình cũng chuyển thể cách của Ndu thành code luôn

Mã:
Sub Nghichdao()
Dim tam, Rg As Range
Set Rg = Sheet1.[a1:a28]
tam = Rg
Rg.Offset(, 1).Formula = "=row(1:1)"
Rg.Resize(, 2).Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess
Rg.Offset(, 1) = Rg.Value
Rg = tam: Set Rg = Nothing
End Sub
 

File đính kèm

Upvote 0
Không bác ơi
Ý em là 1 cột bất kì cơ mà
CỘt này là do mình chọn trước
rồi mình chọn vị trí nó nghịc đảo chẳng hạn
Em sẽ ngâm cứu code các bác rồi chuyển ra cột do mình chọn có được không
Vướng mắc em lại hỏi các bác
 
Upvote 0
quả thật là cao thủ, người việt nam của minh đôi khi không chịu suy nghĩ đơn giản, mà toàn suy nghĩ phức tạp không hà hi hi, cảm ơn ndu96081631 nhiều hi hi
 
Upvote 0
Web KT

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

Back
Top Bottom