rút gọn lệnh macro

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

bicutit

Search Sexy Womans from your city for night
Tham gia
26/11/10
Bài viết
58
Được thích
2
Giới tính
Nam
Nghề nghiệp
Search
Chào các bác,
Sau 1 hồi record macro thì em được mấy lệnh sau và chạy khá ổn, em muốn hỏi các bác xem có cách nào rút gọn được lệnh này không ạ,
Vì công việc công nhân của em thường xuyên phải copy vài dòng ở phía trên rồi cho add dòng cho xuống dưới nên em làm cái này,
Tuy nhiên cái record marcro này lệnh hơi dài, ở đây em thêm 6 dòng, copy 6 dòng ở trên, giả sử em đổi 6 dòng thành 10 dòng thì phải đổi nhiều số, vì vậy em muốn rút gọn bớt lệnh nếu có thể, xin cảm ơn,

function themdongnew() {
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.setCurrentCell(currentCell);
spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 6);
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell().offset(-1, 0);
spreadsheet.getCurrentCell().offset(-6, 0, 6, 1).activate();
spreadsheet.setCurrentCell(currentCell);
currentCell = spreadsheet.getCurrentCell();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 5, 1, 6, sheet.getMaxColumns()).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getCurrentCell().offset(2, 0).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 7, 1, 6, sheet.getMaxColumns()).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getCurrentCell().offset(6, 0).activate();
};
 
Mình record macro khi thao tác cho 1,2,3,...,20 dòng. Tạo thành thư viện 20 functions, cần dùng cái nào thì chạy cái đó. Làm một lần dùng nhiều mà.
 
Mình record macro khi thao tác cho 1,2,3,...,20 dòng. Tạo thành thư viện 20 functions, cần dùng cái nào thì chạy cái đó. Làm một lần dùng nhiều mà.
ko được đâu ạ, mình còn gắn phím tắt để làm cho nhanh nữa
ví dụ hôm nay em phải add 20 lần, mỗi lần 25 dòng,
ngày mai phải add 28 lần, mỗi lần 18 dòng,
mỗi lần add lại phải mở lên rồi chọn số để add thì chậm lắm, chỉnh sửa cái lệnh trên còn nhanh hơn nhiều
 
Vậy mình dùng function "ca ô" ấy là được liền. Bao nhiêu lần, bao nhiêu dòng cũng chiến được hết á.
ý tưởng của bác hay quá
nghĩa là ví dụ em muốn add 18 dòng, và tổng cộng cần 25 lần add
bây giờ em có sẵn lệnh thêm 18 dòng rồi, vậy làm sao để add được 25 lần liên tục như vậy,
bác add thêm cái lệnh đó vào đống lệnh trên của em được ko? cảm ơn bác
 
function ca_ô() {
var soLuot = 25;
var soDong = 18;
for (var i = 1; i++ <= soLuot; )
for (var i2 = 0; i < soDong; i2 += 6) themdongnew();
}

Chỉnh sửa: gõ thiếu một chút.
Dòng này
for (var i2 = 0; i < soDong; i2 += 6) themdongnew();
Phải sửa là
for (var i2 = 0; i2 < soDong; i2 += 6) themdongnew();
 
Lần chỉnh sửa cuối:
function ca_ô() {
var soLuot = 25;
var soDong = 18;
for (var i = 1; i++ <= soLuot; )
for (var i2 = 0; i < soDong; i2 += 6) themdongnew();
}
cảm ơn bác, chưa thành công ạ,
Cho em hỏi cái dòng này là i2 + =18 đúng ko ạ? chứ ko phải là 6
với cả cho cái function này vào trước hay vào sau hay lồng như thế nào vào function trên ạ, em cho cả trước và cả sau đều không chạy, chỉ chạy mỗi cái funtion đầu tiên,
Giả sử lệnh của bác là đúng thì bài toán bây giờ là ghép 2 cái funtion trên vào làm 1 ạ
Mình add 6 dòng và add 10 lần cho dễ, các bác chỉnh lại giúp em với,

function themdongnew() {
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.setCurrentCell(currentCell);
spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 6);
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell().offset(-1, 0);
spreadsheet.getCurrentCell().offset(-6, 0, 6, 1).activate();
spreadsheet.setCurrentCell(currentCell);
currentCell = spreadsheet.getCurrentCell();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 5, 1, 6, sheet.getMaxColumns()).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getCurrentCell().offset(2, 0).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 7, 1, 6, sheet.getMaxColumns()).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getCurrentCell().offset(6, 0).activate();
};


function ca_ô() {
var soLuot = 10;
var soDong = 6;
for (var i = 1; i++ <= soLuot; )
for (var i2 = 0; i < soDong; i2 += 6) themdongnew();
}
 
"add" thì tôi còn đoán mang máng là tọt thêm một mớ xuống dưới (khác với insert chèn một mớ vào giữa).
Ngoài ra, tôi đâu có hiểu "ko" là cái gì - tiếng Anh tôi đoán nó là "knocked out", tức là "đánh quỵ", chả thấy liên quan đến vấn đề.
Hỏi tôi vô ích lắm.
 
function ca_ô() {
var soLuot = 25;
var soDong = 18;
for (var i = 1; i++ <= soLuot; )
for (var i2 = 0; i < soDong; i2 += 6) themdongnew();
}
chạy thành công rồi ạ, cảm ơn bác
Bài đã được tự động gộp:

"add" thì tôi còn đoán mang máng là tọt thêm một mớ xuống dưới (khác với insert chèn một mớ vào giữa).
Ngoài ra, tôi đâu có hiểu "ko" là cái gì - tiếng Anh tôi đoán nó là "knocked out", tức là "đánh quỵ", chả thấy liên quan đến vấn đề.
Hỏi tôi vô ích lắm.
vẫn chưa được bác ạ,
nó thêm dòng đến tận cuối sheet luôn,
dù em chỉnh var soLuot = 5; hay bằng các số khác thì nó đều chạy đến cuối sheet
bác kiểm tra giúp em với
 
Lần chỉnh sửa cuối:
Chào các bác,
Sau 1 hồi record macro thì em được mấy lệnh sau và chạy khá ổn, em muốn hỏi các bác xem có cách nào rút gọn được lệnh này không ạ,
Vì công việc công nhân của em thường xuyên phải copy vài dòng ở phía trên rồi cho add dòng cho xuống dưới nên em làm cái này,
Tuy nhiên cái record marcro này lệnh hơi dài, ở đây em thêm 6 dòng, copy 6 dòng ở trên, giả sử em đổi 6 dòng thành 10 dòng thì phải đổi nhiều số, vì vậy em muốn rút gọn bớt lệnh nếu có thể, xin cảm ơn,

function themdongnew() {
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.setCurrentCell(currentCell);
spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 6);
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell().offset(-1, 0);
spreadsheet.getCurrentCell().offset(-6, 0, 6, 1).activate();
spreadsheet.setCurrentCell(currentCell);
currentCell = spreadsheet.getCurrentCell();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 5, 1, 6, sheet.getMaxColumns()).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getCurrentCell().offset(2, 0).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(spreadsheet.getCurrentCell().getRow() - 7, 1, 6, sheet.getMaxColumns()).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getCurrentCell().offset(6, 0).activate();
};
nếu ở tp thì bao tui ly cafe tôi rút gọn hết cỡ chứ nhìn 1 đóng code đó hơi rối
 
Ca ô còn tiết kiệm, đề nghị li cà phê e rằng hơi khó rồi.
 
nếu ở tp thì bao tui ly cafe tôi rút gọn hết cỡ chứ nhìn 1 đóng code đó hơi rối
Em ở Hà Nội ạ
Các bác giỏi quá
Nếu không mới các bác được cafe thì ủng hộ forum bằng cách donate hay mua sách hay mua khoá học được không ạ?
 
Web KT

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

Back
Top Bottom