Chúng tôi có thể được yêu cầu sắp xếp lại bảng của mình bằng cách di chuyển xung quanh một hoặc nhiều hàng của bảng tính. Có một cách đơn giản để làm điều này;
Cách chuyển đổi cột và hàng trong Google Sheets
- Chúng tôi bắt đầu bằng cách chọn các hàng mà chúng tôi muốn di chuyển và sau đó trên menu Google Trang tính của mình, chúng tôi nhấp vào nút “Chỉnh sửa” > “Di chuyển hàng lên hoặc xuống”;
Bây giờ chúng ta có thể chọn hàng đã chỉ định rồi kéo và thả hàng đó vào vị trí cần thiết. Bằng cách này, chúng tôi có thể di chuyển các hàng trên Google trang tính lên và xuống. Tiếp theo, chúng tôi sẽ trình bày cách thay đổi chiều cao hàng trong Google trang tính ;
Chúng tôi có thể nâng cao bố cục bảng của mình bằng cách thay đổi chiều cao hàng trong Google trang tính .
Đây là một cách đơn giản để làm điều đó
Cho phép con trỏ di chuột qua viền dưới của hàng bảng tính mà chúng tôi muốn thay đổi kích thước và khi nó thay đổi thành một cuộn có Mũi tên Lên/Xuống, chúng tôi có thể nhấp và .
Tiếp theo, chúng tôi sẽ trình bày cách thay đổi kích thước ô trong Google trang tính .
- Nhấp vào menu ngữ cảnh ở góc trên cùng bên phải của bảng tính của chúng tôi. Nhấp chuột phải vào hàng chúng tôi muốn thay đổi kích thước và chọn tùy chọn “Thay đổi kích thước hàng”;
Chúng tôi có thể thay đổi chiều cao hàng trong Google trang tính bất cứ khi nào chúng tôi muốn có các dòng khác nhau có chiều cao tương tự trong trang tính của mình. Chỉ cần chọn tất cả chúng để thực hiện thay đổi thông qua menu ngữ cảnh.
Kết nối tức thì với một chuyên gia Excel
Hầu hết thời gian, vấn đề bạn cần giải sẽ phức tạp hơn một ứng dụng đơn giản của công thức hoặc hàm. Nếu bạn muốn tiết kiệm hàng giờ nghiên cứu và sự thất vọng, hãy dùng thử dịch vụ Excelchat trực tiếp của chúng tôi. Các chuyên gia Excel của chúng tôi luôn sẵn sàng 24/7 để trả lời bất kỳ câu hỏi nào về Excel mà bạn có thể có. Chúng tôi đảm bảo kết nối trong vòng 30 giây và giải pháp tùy chỉnh trong vòng 20 phút.
Bạn muốn tác vụ được tự động chuyển sang một trang tính khác có tên là “Hoàn thành” khi ô Trạng thái được thay đổi thành “Hoàn thành”
Có thể sử dụng bộ lọc hoặc truy vấn để bắt chước những gì được mong đợi. Nhưng khi bạn thực sự muốn dữ liệu của mình được di chuyển vật lý, bộ lọc hoặc truy vấn có thể không hoạt động tốt
Để đạt được điều đó, giải pháp là sử dụng Google Apps Script
Chỉ cần di chuyển hàng
Điều đầu tiên bạn nên quan tâm là kích hoạt, đây là điểm bắt đầu của toàn bộ quá trình tự động hóa. Về cơ bản khi một số điều nhất định xảy ra, Google trang tính sẽ phát ra một số sự kiện để kích hoạt tập lệnh do người dùng xác định nếu có
Có nhiều loại trình kích hoạt khác nhau có thể xử lý các tình huống khác nhau. Để đơn giản, chúng tôi sẽ sử dụng trình kích hoạt chỉnh sửa mặc định sẽ được kích hoạt bất cứ khi nào trang tính được chỉnh sửa thủ công
Dưới đây là đoạn mã để hoàn thành nhiệm vụ. Tất cả những gì bạn cần làm là sao chép tập lệnh vào trình chỉnh sửa tập lệnh của mình [có thể mở qua Tiện ích mở rộng -> Tập lệnh ứng dụng]
function onEdit[e]{
var sourceSheet = e.range.getSheet[];
if[sourceSheet.getSheetName[] === 'Todo']{
var row = e.range.getRow[];
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] === "Done"]{
var targetSheet = SpreadsheetApp.getActiveSpreadsheet[].getSheetByName["Done"];
targetSheet.appendRow[rowValues];
sourceSheet.deleteRow[row];
}
}
}
Kịch bản khá tự giải thích. Chỉ cần một vài điều cần lưu ý
if[sourceSheet.getSheetName[] === 'Todo']
kiểm tra tên của trang nguồn. Nếu không, các sự kiện từ các trang tính khác có thể kích hoạt việc di chuyển, đây là điều không mong muốnrowRange.getValues[][0]
nhận các giá trị của hàng dưới dạng dữ liệu được trả về bởi rowRange. getValues[] là một mảng hai chiềuif[rowValues[0] === "Done"]
kiểm tra xem giá trị của cột trạng thái có phải là “Hoàn thành” không. Lưu ý cột trạng thái ở đây là phần tử đầu tiên của mảng. Nếu cột ở vị trí khác thì nên thay đổi cho phù hợpNếu bạn chỉ muốn sao chép hàng sang trang tính khác, dòng mã cuối cùng sẽ được ghi chú
Di chuyển hàng lùi
Một yêu cầu khác là di chuyển hàng về phía sau nếu trạng thái được thay đổi từ “Xong” thành “Việc cần làm”
Điều này có thể dễ dàng thực hiện bằng cách sao chép tập lệnh và sửa đổi điều kiện một chút
function onEdit[e]{
var sourceSheet = e.range.getSheet[];
var row = e.range.getRow[];
if[sourceSheet.getSheetName[] === 'Todo']{
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] === "Done"]{
var targetSheet = SpreadsheetApp.getActiveSpreadsheet[].getSheetByName["Done"];
targetSheet.appendRow[rowValues];
sourceSheet.deleteRow[row];
}
}
if[sourceSheet.getSheetName[] === 'Done']{
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] !== "Done"]{
var targetSheet = SpreadsheetApp.getActiveSpreadsheet[].getSheetByName["Todo"];
targetSheet.appendRow[rowValues];
sourceSheet.deleteRow[row];
}
}
}
Tập lệnh chắc chắn có thể được cải thiện vì sao chép mã là một thứ gì đó không lành mạnh. Bạn nên tránh trùng lặp quá nhiều để bảo trì dễ dàng. Nhưng đây không phải là trọng tâm của bài viết
Di chuyển hàng lên trên cùng
Đoạn script trên sẽ chỉ nối hàng vào cuối trang mục tiêu. Bạn có thể muốn hiển thị hàng đã di chuyển lên trên cùng để mọi người có thể dễ dàng nhìn thấy hoặc thậm chí chèn hàng vào một vị trí nhất định
Ví dụ: hãy nâng cao một chút tập lệnh để chèn hàng làm hàng thứ hai, tôi. e. , sau hàng tiêu đề
function onEdit[e]{
var ss = SpreadsheetApp.getActiveSpreadsheet[];
var sourceSheet = e.range.getSheet[];
if[sourceSheet.getSheetName[] === 'Todo']{
var row = e.range.getRow[];
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] === "Done"]{
var targetSheet = ss.getSheetByName["Done"];
targetSheet.insertRowAfter[1];
var targetRange = targetSheet.getRange[2, 1];
rowRange.copyTo[targetRange];
sourceSheet.deleteRow[row];
}
}
}
Giải thích về mã đã thay đổi
targetSheet.insertRowAfter[1];
tạo một hàng trống ngay sau hàng đầu. Bạn có thể thay đổi 1 thành bất kỳ số vị trí nào kháctargetSheet.getRange[2, 1];
lấy cột đầu tiên của hàng thứ hai, hàng mới tạo, dưới dạng phạm virowRange.copyTo[targetRange]
sao chép dữ liệu hàng vào hàng trống
Di chuyển hàng chỉ với giá trị
Nếu không muốn sao chép định dạng của hàng, bạn có thể sử dụng hàm copyTo khác với tham số là kiểu dán
function onEdit[e]{
var ss = SpreadsheetApp.getActiveSpreadsheet[];
var sourceSheet = e.range.getSheet[];
if[sourceSheet.getSheetName[] === 'Todo']{
var row = e.range.getRow[];
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] === "Done"]{
var targetSheet = ss.getSheetByName["Done"];
targetSheet.insertRowAfter[1];
var targetRange = targetSheet.getRange[2, 1];
rowRange.copyTo[targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false];
sourceSheet.deleteRow[row];
}
}
}
Có các tùy chọn khác để kiểm soát hành vi sao chép. Tham khảo CopyPasteType
Ghi chú thêm
Tập lệnh này chỉ hoạt động khi thay đổi được thực hiện trên một hàng. Khi thay đổi liên quan đến nhiều hàng, bạn nên sử dụng vòng lặp để đi qua từng hàng
Trong trường hợp này, việc xóa hàng sẽ hơi phức tạp vì chỉ mục của hàng có thể bị ảnh hưởng sau mỗi lần xóa. Vì vậy, bạn nên xóa chúng từ dưới lên
Nếu bạn muốn thực hiện các hành vi nâng cao hơn, bạn có thể tham khảo API google sheet và nâng cao dần tập lệnh để nó hoạt động như ý muốn
Cách thực hiện với Sheet Automation
Cuối cùng, hãy xem cách thực hiện những điều trên với Tự động hóa trang tính. Tất cả những gì bạn cần làm là tạo quy tắc tự động hóa với một vài phần
Đầu tiên, tạo trình kích hoạt
function onEdit[e]{
var sourceSheet = e.range.getSheet[];
var row = e.range.getRow[];
if[sourceSheet.getSheetName[] === 'Todo']{
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] === "Done"]{
var targetSheet = SpreadsheetApp.getActiveSpreadsheet[].getSheetByName["Done"];
targetSheet.appendRow[rowValues];
sourceSheet.deleteRow[row];
}
}
if[sourceSheet.getSheetName[] === 'Done']{
var rowRange = sourceSheet.getRange[row, 1, 1, sourceSheet.getLastColumn[]];
var rowValues = rowRange.getValues[][0];
if[rowValues[0] !== "Done"]{
var targetSheet = SpreadsheetApp.getActiveSpreadsheet[].getSheetByName["Todo"];
targetSheet.appendRow[rowValues];
sourceSheet.deleteRow[row];
}
}
}
0 trên cột A của trang tính Todo. Bạn có thể theo dõi nhiều cột ở đâySau đó, tạo Điều kiện cột để kiểm tra xem giá trị từ cột A có phải là “Xong” không
Tạo hành động cuối cùng để di chuyển hàng sang trang tính Xong với các tùy chọn thích hợp
Khi quy tắc tự động hóa được lưu, nó sẽ sẵn sàng phản ứng với thay đổi được thực hiện đối với cột A. Không có phép thuật mặc dù. Nó chỉ thực hiện những gì mà các tập lệnh trên làm, theo cách dễ dàng hơn nhiều