Hỏi về macro di chuyển ô này sang ô khác

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Chào các anh chị,
Em mới bắt đầu tìm hiểu về VBA. Các anh chị có cách nào di chuyển một ô có địa chỉ được ghi ở một ô khác tới một ô chỉ định không ạ?
Cụ thể như trong file excel em tạo ạ

Mong các anh chị giúp đỡ
 

File đính kèm

Lần chỉnh sửa cuối:

Cu Tồ

Tìm đến kiến thức!
Tham gia ngày
6 Tháng năm 2020
Bài viết
271
Được thích
90
Điểm
45
Chào các đại ca,
E mới bắt đầu tìm hiểu về VBA. Các đại ca có cách nào di chuyển một ô có địa chỉ được ghi ở một ô khác tới một ô chỉ định không ạ?
Cụ thể như trong file excel e tạo ạ

Mong các đại ca giúp đỡ
Ở đây không ai dám nhận là đại ca đâu bạn ơi,toàn các bác trung tuần là đa phần.mình cũng mới bắt đầu học này.Củ chuốt nhất là như thế là .mà ô E5 của bạn có gì đâu mà cut?
Mã:
Range(Range("D3")).Cut Range("E3")
 

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Ở đây không ai dám nhận là đại ca đâu bạn ơi,toàn các bác trung tuần là đa phần.mình cũng mới bắt đầu học này.Củ chuốt nhất là như thế là .mà ô E5 của bạn có gì đâu mà cut?
Mã:
Range(Range("D3")).Cut Range("E3")
Cảm anh nhé, em viết nhầm cut ô b5 anh ạ
Tiện đây em có bài toán này anh giải giúp em được không
Công ty em có các ống nước độ dài 4000mm, giờ cần cắt thành các đoạn ống có chiều dài theo danh sách cho trước. Bài toán là cắt như thế nào để đỡ lãng phí nhất.

Cách làm của em là tìm ra nhóm các đoạn ống có tổng bằng 4000(đoạn ống thứ i chỉ xuất hiện trong 1 nhóm), sau khi tìm hết nhóm có tổng bằng 4000 em tìm tiếp nhóm có tổng bằng 3999,3998,...,2000(4000/2).

Từ phương án này em tạo file excel(đính kèm) với cột C trả về vị trí các ô có tổng bằng tham số ở cột B tương ứng. Hiện tại em phải thực hiện di chuyển các ô này ra một nhóm riêng bằng tay. Anh có cách nào di chuyển nhóm các ô đấy bằng lệnh trong VBA không ạ?
 

File đính kèm

Lần chỉnh sửa cuối:

Cu Tồ

Tìm đến kiến thức!
Tham gia ngày
6 Tháng năm 2020
Bài viết
271
Được thích
90
Điểm
45
Cảm ơn sư huynh nhé, e viết nhầm cut ô b5 huynh ạ
Tiện đây e có bài toán này sư huynh giải giúp em được không
Công ty e có các ống nước độ dài 4000mm, giờ cần cắt thành các đoạn ống có chiều dài theo danh sách cho trước. Bài toán là cắt như thế nào để đỡ lãng phí nhất.

Cách làm của e là tìm ra nhóm các đoạn ống có tổng bằng 4000(đoạn ống thứ i chỉ xuất hiện trong 1 nhóm), sau khi tìm hết nhóm có tổng bằng 4000 e tìm tiếp nhóm có tổng bằng 3999,3998,...,2000(4000/2).

Từ phương án này e tạo file excel(đính kèm) với cột C trả về vị trí các ô có tổng bằng tham số ở cột b tương ứng. Hiện tại e phải thực hiện di chuyển các ô này ra một nhóm riêng bằng tay. Sư huynh có cách nào di chuyển nhóm các ô đấy bằng lệnh trong VBA không ạ
Bạn đang làm cho công ty nhật nhưng hình như lại thích xem phim chưởng của Trung thì phải.xem qua bài toán thì góp ý với bạn như sau :
1.bạn sửa lại các xưng hô đầu bài viết đi,tại diễn đàn có nội quy đăng bài đó bạn.không viết tắt các kiểu bạn xem nội quy sẽ rõ,sửa lại sẽ có sự nhiều sự giúp đỡ của các bác trong điễn đàn tối ưu cho công việc của bạn hơn
2.là xem qua bài của bạn thì giống như lấy các độ dài có sẵn để cắt sao cho lãng phí với ông có độ dài là 4000mm ,nên bạn xem trước bài này xem tìm được giải pháp không nè https://www.giaiphapexcel.com/diend...trong-dãy-số-để-ra-1-số-tổng-cho-trước.84383/
 

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Cảm ơn anh đã tham gia góp ý. Em sửa lại câu từ xưng hô với viết tắt rồi
Khi tìm kiếm cách giải quyết em cũng có đọc được 2 bài anh trích dẫn bên trên và có dùng hàm SUMF của một anh đã chia sẻ, bài toán đã giải quyết được nhưng em phải thao tác bằng tay nhiều kiến thức VBA còn kém nên vừa tìm hiểu vừa mong tìm được sự giúp đỡ của các anh trên diễn đàn.
 
Lần chỉnh sửa cuối:

Cu Tồ

Tìm đến kiến thức!
Tham gia ngày
6 Tháng năm 2020
Bài viết
271
Được thích
90
Điểm
45
Cảm ơn anh đã tham gia góp ý. Em sửa lại câu từ xưng hô với viết tắt rồi
Khi tìm kiếm cách giải quyết em cũng có đọc được 2 bài anh trích dẫn bên trên và có dùng hàm SUMF của một anh đã chia sẻ, bài toán đã giải quyết được nhưng em phải thao tác bằng tay nhiều kiến thức VBA còn kém nên vừa tìm hiểu vừa mong tìm được sự giúp đỡ của các anh trên diễn đàn.
Đành chờ các bafc trong diễn đàn hỗ trợ vậy,cái này quá sức của mình hihi·
 

tigertiger

Coming back ...
Tham gia ngày
25 Tháng một 2007
Bài viết
1,646
Được thích
1,569
Điểm
860
Cảm ơn anh đã tham gia góp ý. Em sửa lại câu từ xưng hô với viết tắt rồi
Khi tìm kiếm cách giải quyết em cũng có đọc được 2 bài anh trích dẫn bên trên và có dùng hàm SUMF của một anh đã chia sẻ, bài toán đã giải quyết được nhưng em phải thao tác bằng tay nhiều kiến thức VBA còn kém nên vừa tìm hiểu vừa mong tìm được sự giúp đỡ của các anh trên diễn đàn.
Đã giải quyết được còn nhờ làm gì nữa?
 

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Đã giải quyết được còn nhờ làm gì nữa?
Ý em là bài toán cơ bản đã được giải quyết nhưng phải thao tác cut-paste bằng tay nhiều nên em lên hỏi các anh chị có cách nào làm tự động không?

Hiện tại có bài này https://www.giaiphapexcel.com/diendan/threads/tìm-các-con-số-có-tổng-bằng-1-con-số-cho-trước.78454/page-2
là khá giống với bài toán của em nhưng kết quả lại trả ra tổ hợp các nhóm số có tổng bằng số cho trước, một số xuất hiện ở nhiều nhóm khác với yêu cầu bài toán của em là một số(số ở vị trí i) chỉ xuất hiện ở 1 nhóm duy nhất.
Em đang nghiên cứu code bài này và định chèn phần xóa bỏ số (đã được liệt kê mỗi khi tìm ra nhóm có kết quả bằng tổng cho trước) trong dãy ban đầu rồi tiếp tục vòng lặp tìm kiếm nhưng chưa hiểu code nên k biết chèn vào đâu. hic
 

Cu Tồ

Tìm đến kiến thức!
Tham gia ngày
6 Tháng năm 2020
Bài viết
271
Được thích
90
Điểm
45
Cảm ơn anh đã tham gia góp ý. Em sửa lại câu từ xưng hô với viết tắt rồi
Khi tìm kiếm cách giải quyết em cũng có đọc được 2 bài anh trích dẫn bên trên và có dùng hàm SUMF của một anh đã chia sẻ, bài toán đã giải quyết được nhưng em phải thao tác bằng tay nhiều kiến thức VBA còn kém nên vừa tìm hiểu vừa mong tìm được sự giúp đỡ của các anh trên diễn đàn.
Xem qua file của bạn thì thấy bạn đang sửa dụng công thức tự tạo. Thôi để không quá phức tạp tôi làm theo hướng mà bạn đang đi luôn
1,Xin phép được sửa 1 tí trong code hàm sumF của tác giả code .bạn sửa thành như sau ,thay dấu cộng bằng dấu "," để lấy các giá trị ô.bỏ dấu bằng ở đầu. như thế này bạn sẽ lấy được các giá trị ô mà bạn muốn lấy
1600914712474.png
Mã:
For k = 1 To n
    SumF = SumF & "," & Data(2, Arr(k))
Next
SumF = Replace(SumF, ",", "", 1, 1)
2. gợi ý : Sau đó bạn dùng vòng lặp copy giá trị qua vị trí bạn mong muốn
 

tigertiger

Coming back ...
Tham gia ngày
25 Tháng một 2007
Bài viết
1,646
Được thích
1,569
Điểm
860
Ý em là bài toán cơ bản đã được giải quyết nhưng phải thao tác cut-paste bằng tay nhiều nên em lên hỏi các anh chị có cách nào làm tự động không?

Hiện tại có bài này https://www.giaiphapexcel.com/diendan/threads/tìm-các-con-số-có-tổng-bằng-1-con-số-cho-trước.78454/page-2
là khá giống với bài toán của em nhưng kết quả lại trả ra tổ hợp các nhóm số có tổng bằng số cho trước, một số xuất hiện ở nhiều nhóm khác với yêu cầu bài toán của em là một số(số ở vị trí i) chỉ xuất hiện ở 1 nhóm duy nhất.
Em đang nghiên cứu code bài này và định chèn phần xóa bỏ số (đã được liệt kê mỗi khi tìm ra nhóm có kết quả bằng tổng cho trước) trong dãy ban đầu rồi tiếp tục vòng lặp tìm kiếm nhưng chưa hiểu code nên k biết chèn vào đâu. hic
Tôi thì nghĩ thực dụng, bạn nên tìm phần mêm chuyên ví như cutmaster2D, Real Cut 1D
Dùng bản free cũng đủ dùng cho quy mô nhỏ
Còn có tiền thì mua bản full sẽ tốt hơn
 

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Xem qua file của bạn thì thấy bạn đang sửa dụng công thức tự tạo. Thôi để không quá phức tạp tôi làm theo hướng mà bạn đang đi luôn
1,Xin phép được sửa 1 tí trong code hàm sumF của tác giả code .bạn sửa thành như sau ,thay dấu cộng bằng dấu "," để lấy các giá trị ô.bỏ dấu bằng ở đầu. như thế này bạn sẽ lấy được các giá trị ô mà bạn muốn lấy
View attachment 246084
Mã:
For k = 1 To n
    SumF = SumF & "," & Data(2, Arr(k))
Next
SumF = Replace(SumF, ",", "", 1, 1)
2. gợi ý : Sau đó bạn dùng vòng lặp copy giá trị qua vị trí bạn mong muốn
Cảm ơn anh, anh cho e xin code vòng lặp được không ạ.
 

Cu Tồ

Tìm đến kiến thức!
Tham gia ngày
6 Tháng năm 2020
Bài viết
271
Được thích
90
Điểm
45
Em cảm ơn anh, tối về e nghiên cứu thêm
Nếu vẫn chưa giải quyết được vấn đề bạn có thể lập topic mới vì câu hỏi thứ nhất của bạn đã được trả lời,còn câu hỏi thứ hai mà bạn hỏi chưa thực sự thỏa mãn.trong diễn đàn chắc là có bác làm được.Chúc bạn may mắn
 

hazooo

Thành viên mới
Tham gia ngày
16 Tháng chín 2020
Bài viết
19
Được thích
4
Điểm
15
Tuổi
25
Tôi thì nghĩ thực dụng, bạn nên tìm phần mêm chuyên ví như cutmaster2D, Real Cut 1D
Dùng bản free cũng đủ dùng cho quy mô nhỏ
Còn có tiền thì mua bản full sẽ tốt hơn
Cảm ơn anh đã giới thiệu 2 phần mềm trên, em mới tải về real cut 1d thì thấy nó xịn quá. Không biết nó dùng thuật toán nào nhanh mà tối ưu được như thế
 
Top Bottom