Nhiều thẻ trong google sheet

Làm cách nào để thiết lập nhiều bộ sưu tập TAGS chạy cùng lúc? . e. có hai chủ đề tôi quan tâm trên Twitter và tôi muốn thu thập các tweet trên cả hai cùng một lúc

Tôi chỉ cần tải xuống một bản sao khác của TAGS và thiết lập nó như bình thường?

Cảm ơn nhiều

anna

Tháng Chín 13, 2018 lúc 7. 53 giờ chiều

mhawksey

Chủ chốt

Có – Nếu bạn tạo một bản sao khác của TAGS Google Trang tính, bạn có thể thiết lập cụm từ tìm kiếm khác và thu thập dữ liệu mà không gặp vấn đề gì

Mục đích chính của danh sách thả xuống trong Google Trang tính là cung cấp các tùy chọn mà người dùng có thể chọn. Nó cung cấp cho người dùng cái nhìn rõ ràng về tất cả các tùy chọn có sẵn và cũng đảm bảo rằng người dùng chỉ chọn các mục được phép

Danh sách thả xuống cũng đảm bảo rằng có ít lỗi hơn vì giờ đây người dùng có thể chọn từ danh sách được xác định trước thay vì nhập nội dung ô theo cách thủ công

Google trang tính cho phép chúng tôi sử dụng chức năng này một cách dễ dàng. Chỉ với một vài cú nhấp chuột, bạn có thể tạo danh sách thả xuống một ô hoặc điền vào toàn bộ hàng hoặc cột bằng danh sách thả xuống

Tuy nhiên, bạn sẽ nhận thấy rằng danh sách thả xuống mặc định của Google Trang tính cho phép người dùng chỉ chọn một mục duy nhất từ ​​danh sách

Thông thường, bạn có thể cần chọn nhiều tùy chọn trong danh sách thả xuống. Ví dụ: khi có một bộ sưu tập màu để bạn chọn, bạn có thể thích nhiều hơn một màu

Hoặc có thể muốn nhận danh sách các ngôn ngữ mã hóa mà người dùng thành thạo

Trong những trường hợp như vậy, có thể người dùng biết nhiều hơn một và cần phải chọn nhiều tùy chọn từ trình đơn thả xuống

Do đó, nhiều lựa chọn trong danh sách thả xuống có thể khá hữu ích. Rất tiếc, theo truyền thống, tùy chọn này không được phép trong Google Trang tính. Bạn chỉ được phép có một lựa chọn tại một thời điểm

Tin tốt là có một cách giải quyết vấn đề này. Có thể làm cho danh sách thả xuống của bạn cho phép nhiều lựa chọn bằng cách sử dụng Google AppScript

Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo danh sách thả xuống cho phép nhiều lựa chọn (đại loại như hình bên dưới)

Nhiều thẻ trong google sheet

Nhưng trước tiên, hãy bắt đầu lại từ đầu

Mục lục

Hãy bắt đầu bằng cách tạo danh sách thả xuống mới từ danh sách các tùy chọn màu

Nhấp vào đây để nhận bản sao của Google Trang tính đã bật nhiều lựa chọn (tạo một bản sao để sử dụng)

Cho phép nhiều lựa chọn trong danh sách thả xuống (có lặp lại)

Đối với hướng dẫn này, tôi sẽ sử dụng tập dữ liệu sau đây của các mục và sẽ tạo trình đơn thả xuống trong ô C1

Nhiều thẻ trong google sheet

Để tạo danh sách thả xuống cho phép nhiều lựa chọn, bạn cần thực hiện hai việc

  1. Tạo danh sách thả xuống bằng cách sử dụng danh sách các mục
  2. Thêm chức năng trong Trình chỉnh sửa tập lệnh sẽ bật nhiều lựa chọn trong trình đơn thả xuống

Hãy xem xét chi tiết từng bước này

Tạo danh sách thả xuống

Giả sử tôi có tập dữ liệu gồm các mục như hình bên dưới và tôi muốn tạo danh sách thả xuống trong ô C1

Nhiều thẻ trong google sheet

Dưới đây là các bước để làm điều này

  1. Chọn ô C1 (ô mà bạn muốn thả xuống)
  2. Nhấp vào tùy chọn Dữ liệu trong menu
    Nhiều thẻ trong google sheet
  3. Nhấp vào Xác thực dữ liệu
    Nhiều thẻ trong google sheet
  4. Trong hộp thoại Xác thực dữ liệu, hãy đảm bảo rằng 'Phạm vi ô' đề cập đến ô mà bạn muốn trình đơn thả xuống
    Nhiều thẻ trong google sheet
  5. Trong Tiêu chí, chọn 'Danh sách từ một phạm vi', sau đó chọn phạm vi có các mục mà bạn muốn hiển thị trong trình đơn thả xuống
    Nhiều thẻ trong google sheet
  6. Nhấp vào Lưu

Danh sách thả xuống của bạn bây giờ sẽ xuất hiện trong ô được chỉ định của bạn (C1 trong ví dụ này). Khi bạn nhấp vào mũi tên, bạn sẽ thấy danh sách các tùy chọn của mình

Lưu ý rằng bạn chỉ được phép chọn một tùy chọn tại một thời điểm

Bây giờ, hãy để tôi chỉ cho bạn cách chuyển đổi trình đơn thả xuống này (chỉ cho phép hiển thị một mục trong ô) thành trình đơn cho phép nhiều lựa chọn

Và để làm được điều đó, bạn cần thêm chức năng script trong Google Sheets script editor

Thêm Google Apps Script để kích hoạt nhiều lựa chọn

Dưới đây là mã tập lệnh mà bạn sẽ phải sao chép và dán vào trình chỉnh sửa tập lệnh (các bước được đề cập bên dưới phần sau mã)

function onEdit(e) {
var oldValue;
var newValue;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var activeCell = ss.getActiveCell();
if(activeCell.getColumn() == 3 && activeCell.getRow() == 1 && ss.getActiveSheet().getName()=="Sheet1") {
newValue=e.value;
oldValue=e.oldValue;
if(!e.value) {
activeCell.setValue("");
}
else {
if (!e.oldValue) {
activeCell.setValue(newValue);
}
else {
activeCell.setValue(oldValue+', '+newValue);
}
}
}
}

Dưới đây là các bước để thêm mã tập lệnh này vào phần phụ trợ của Google Trang tính để trình đơn thả xuống mà chúng tôi đã tạo trong ô C1 có thể cho phép chọn nhiều tùy chọn

  1. Nhấp vào tùy chọn Công cụ trong menu
  2. Nhấp vào Trình chỉnh sửa tập lệnh. Thao tác này sẽ mở Trình chỉnh sửa tập lệnh trong một cửa sổ mới
    Nhiều thẻ trong google sheet
  3. trong mã. gs, xóa mọi thứ đã có và sao chép và dán mã macro ở trên
    Nhiều thẻ trong google sheet
  4. Nhấp vào nút Lưu trên thanh công cụ (hoặc sử dụng phím tắt Control + S)
    Nhiều thẻ trong google sheet
  5. Đặt tên cho dự án (bạn chỉ cần thực hiện việc này một lần)
    Nhiều thẻ trong google sheet
  6. Đóng Cửa sổ Tập lệnh (nếu bạn muốn)

Bây giờ, hãy quay lại trang tính và thử thực hiện nhiều lựa chọn trong trình đơn thả xuống. Ví dụ đầu tiên chọn Apple sau đó chọn Banana

Bạn sẽ nhận thấy rằng phải mất một giây (đôi khi là hai giây) và sau đó sẽ hiển thị cho bạn cả hai mục đã chọn (được phân tách bằng dấu phẩy)

Ghi chú. Bạn sẽ thấy một hình tam giác màu đỏ ở phần trên cùng bên phải của ô. Nó có thể trông giống như một lỗi (có nghĩa là giá trị bạn có trong ô không như mong đợi). Bạn có thể bỏ qua điều này một cách an toàn

Nhiều thẻ trong google sheet

Cũng lưu ý rằng với mã này, nó sẽ cho phép bạn chọn cùng một mục hai lần. Ví dụ bạn chọn Apple rồi chọn lại Apple thì nó hiện 2 lần trong ô

Nếu bạn muốn tạo danh sách thả xuống cho phép nhiều lựa chọn mà không lặp lại, tôi đã cung cấp mã sau trong hướng dẫn này

Mã hoạt động như thế nào?

Hãy cố gắng hiểu từng phần mã này

Mã bắt đầu bằng dòng

function onEdit(e)

onEdit() là một chức năng đặc biệt trên Google Sheets. Nó còn được gọi là trình xử lý sự kiện. Chức năng này được kích hoạt mỗi khi có thay đổi trong bảng tính của bạn

Chúng tôi muốn mã nhiều lựa chọn của chúng tôi chạy mỗi khi một mục được chọn từ danh sách thả xuống, vì vậy sẽ rất hợp lý khi đặt mã của chúng tôi vào hàm onEdit()

Bây giờ, AppScript chuyển chức năng này dưới dạng đối tượng sự kiện làm đối số. Thông thường, đối tượng sự kiện được gọi là e. Đối tượng sự kiện này chứa thông tin về sự kiện được kích hoạt

Nếu bạn biết cơ bản về AppScript, bạn sẽ thấy bốn dòng đầu tiên khá dễ hiểu

var oldValue;
var newValue;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var activeCell = ss.getActiveCell();

Tôi đã khai báo hai biến – một (oldValue) sẽ giữ giá trị cũ của ô và biến khác (newValue) sẽ giữ giá trị mới của ô

Biến activeCell sẽ giữ ô hiện đang hoạt động đã được chỉnh sửa

Bây giờ, chúng tôi không muốn mã chạy mỗi khi bất kỳ ô nào được chỉnh sửa. Chúng tôi chỉ muốn nó chạy khi ô CA1 của Sheet1 được chỉnh sửa. Vì vậy, chúng tôi đảm bảo điều đó bằng cách sử dụng câu lệnh if

if(activeCell.getColumn() == 3 && activeCell.getRow() == 1 && ss.getActiveSheet().getName()=="Sheet1")

Đoạn mã trên kiểm tra số hàng và cột của ô đang hoạt động và tên trang tính. Vì trình đơn thả xuống nằm trong ô C1, nó sẽ kiểm tra xem số hàng có phải là 1 hay không và số cột có phải là 3 hay không

Chỉ khi cả ba điều kiện này được đáp ứng thì mã trong câu lệnh IF mới được thực thi

Dưới đây là mã được thực thi khi chúng tôi ở ô bên phải (C1 trong ví dụ của chúng tôi)

newValue=e.value;
oldValue=e.oldValue;

e. oldValue cũng là một thuộc tính của đối tượng sự kiện, e. Điều này giữ giá trị trước đó của ô hoạt động. Trong trường hợp của chúng tôi, đây sẽ là giá trị trước khi chúng tôi thực hiện lựa chọn thả xuống

Chúng tôi muốn gán giá trị này cho biến oldValue

e. giá trị là thuộc tính của đối tượng sự kiện, e. Điều này giữ giá trị hiện tại của ô hoạt động. Chúng tôi muốn gán giá trị này cho biến newValue

Đầu tiên, chúng ta hãy xem xét điều gì sẽ xảy ra nếu không có tùy chọn nào được chọn. Trong trường hợp đó, e. giá trị sẽ không được xác định. Khi điều này xảy ra, chúng tôi không muốn bất cứ thứ gì được hiển thị trong ô A1. Vì vậy, chúng tôi đặt một giá trị trống trên ô

Đây cũng là trường hợp nếu người dùng quyết định xóa tất cả các lựa chọn trước đó và khởi động lại từ đầu

if(!e.value) {
activeCell.setValue("");
}

Nếu người dùng chọn một tùy chọn, thì các dòng sau câu lệnh khác sẽ được thực thi. Bây giờ chúng tôi muốn chỉ định những việc cần làm nếu một tùy chọn được chọn lần đầu tiên từ danh sách thả xuống

Điều đó có nghĩa là e. oldValue không được xác định. Khi điều này xảy ra, chúng tôi chỉ muốn tùy chọn đã chọn (giá trị mới) được hiển thị trong ô A1

if (!e.oldValue) {
activeCell.setValue(newValue);

Cuối cùng, chúng tôi chỉ định những việc cần làm trong lần tiếp theo trở đi khi một tùy chọn được chọn. Điều đó có nghĩa là khi cả hai e. giá trị và e. oldValue giữ các giá trị cụ thể

else {
activeCell.setValue(oldValue+', '+newValue);
}

Sau khi bạn đang nhập mã, hãy lưu mã đó rồi thử thực hiện nhiều lựa chọn từ danh sách thả xuống của bạn. Bạn sẽ thấy tất cả các tùy chọn đã chọn của mình được hiển thị lần lượt, được phân tách bằng dấu phẩy

Nếu bạn mắc lỗi, bạn luôn có thể xóa ô và bắt đầu lại. Khi điều này xảy ra, chúng tôi muốn hiển thị cả giá trị trước đó và giá trị mới được chọn trong ô A1, tất cả được phân tách bằng dấu phẩy

Ghi chú. Khi bạn sử dụng đoạn mã trên, nó sẽ không cho phép bạn quay lại và chỉnh sửa một phần của chuỗi. Ví dụ bạn muốn chỉnh sửa chuỗi mặt hàng theo cách thủ công hoặc muốn xóa một phần của nó, bạn sẽ không thể làm được điều này. Bạn sẽ phải xóa tất cả nội dung ô và bắt đầu lại nếu muốn thực hiện bất kỳ thay đổi nào

Tuy nhiên, có một vấn đề nhỏ với điều này. Lưu ý rằng nếu bạn chọn một mục nhiều lần, mục đó sẽ được nhập lại vào danh sách lựa chọn của bạn. Nói cách khác, sự lặp lại được cho phép. Nhưng thông thường, chúng tôi không muốn điều đó

Dưới đây, tôi đã cung cấp chi tiết về cách bạn có thể thay đổi mã của mình để đảm bảo rằng một mục chỉ có thể được chọn một lần để không có sự lặp lại

Cho phép nhiều lựa chọn trong danh sách thả xuống (không lặp lại)

Dưới đây là mã sẽ cho phép nhiều lựa chọn trong trình đơn thả xuống mà không cần lặp lại

________số 8

Trong đoạn mã trên, tôi lại sử dụng ô C1 trong trang tính Sheet1 làm ví dụ. Trong trường hợp trình đơn thả xuống của bạn nằm trong một ô (hoặc trang tính) khác, bạn cần điều chỉnh mã cho phù hợp

Phần bên dưới của mã giúp chúng tôi có thể bỏ qua bất kỳ giá trị lặp lại nào trong trình đơn thả xuống

if(oldValue.indexOf(newValue) <0) {
activeCell.setValue(oldValue+', '+newValue);
}
else {
activeCell.setValue(oldValue);
}

Hàm indexof() ở đây kiểm tra xem chuỗi trong oldValue có chứa chuỗi trong newValue hay không

Nếu có, thì nó sẽ trả về chỉ mục của chuỗi trong oldValue. Nếu không sẽ trả về giá trị nhỏ hơn 0

Nếu tùy chọn mới được chọn tồn tại trong danh sách của chúng tôi, chúng tôi muốn giữ nguyên danh sách đó (vì vậy chúng tôi điền ô C1 với giá trị trước đó). Nếu không, thì chúng tôi muốn thêm tùy chọn mới được chọn vào danh sách bằng dấu phẩy (‘,’) và hiển thị nó trong ô C1

Nhiều lựa chọn trong danh sách thả xuống (Toàn bộ cột hoặc nhiều ô)

Trong các ví dụ trên, tôi đã chỉ cho bạn cách có menu thả xuống nhiều lựa chọn trong một ô

Nhưng nếu bạn muốn lấy cái này trong toàn bộ một cột hoặc nhiều ô thì sao?

Bạn có thể dễ dàng hoàn thành việc này với một số sửa đổi nhỏ trong mã

Nếu bạn muốn trình đơn thả xuống cho phép chọn nhiều mục trong toàn bộ cột C, bạn cần thay thế dòng mã sau

if(activeCell.getColumn() == 3 && activeCell.getRow() == 1 && ss.getActiveSheet().getName()=="Sheet1")

với dòng mã sau

function onEdit(e)
1

Khi bạn làm điều này, chúng tôi chỉ kiểm tra xem cột có phải là 3 hay không. Bất kỳ ô nào trong Trang tính 1 và trong Cột 3 sẽ đáp ứng tiêu chí NẾU này và bất kỳ trình đơn thả xuống nào trong này sẽ cho phép nhiều lựa chọn

Tương tự, nếu bạn muốn điều này có sẵn cho toàn bộ cột C và F, hãy sử dụng dòng bên dưới để thay thế

function onEdit(e)
2

Dòng trên sử dụng điều kiện OR trong câu lệnh IF để kiểm tra xem số cột là 3 hay 6. Trong trường hợp một ô có trình đơn thả xuống nằm trong cột C hoặc F, nhiều lựa chọn sẽ được bật

Tương tự, nếu bạn muốn bật tính năng này cho nhiều ô, bạn cũng có thể làm điều đó bằng cách sửa đổi mã

Vì vậy, đây là cách bạn có thể bật nhiều lựa chọn trong trình đơn thả xuống trong Google Trang tính. Mặc dù tính năng này không khả dụng dưới dạng tính năng tích hợp, nhưng bạn có thể dễ dàng thực hiện việc này bằng một số phép thuật Google Apps Script

Hy vọng bạn tìm thấy hướng dẫn này hữu ích

Các hướng dẫn khác về Google Trang tính mà bạn có thể thấy hữu ích

  • Cách áp dụng công thức cho toàn bộ cột trong Google Sheets
  • Cách kết hợp các ô trong Google Sheets (sử dụng Công thức đơn giản)

Bài viết phổ biến nhất

Nhiều thẻ trong google sheet

5 cách đơn giản để làm nổi bật các bản sao trong Google Sheets

Nhiều thẻ trong google sheet

NẾU CHỨA Công thức Google Trang tính [2 Tùy chọn thông minh]

Nhiều thẻ trong google sheet

Cách áp dụng công thức cho toàn bộ cột trong Google Sheets

Nhiều thẻ trong google sheet

Cách VLOOKUP từ một trang tính khác trong Google Trang tính

Sumit

Google Trang tính và Microsoft Excel Expert

100 suy nghĩ về “Cách tạo nhiều lựa chọn trong danh sách thả xuống trong Google Trang tính”

  1. chú chó

    Một vấn đề quan trọng mà tôi vừa gặp phải với phiên bản “không lặp lại”, đó là so sánh các chuỗi thay vì so sánh các giá trị. e. g. nếu tôi đang chọn nhiều kích cỡ quần áo và tôi chọn “XS”, sau đó chọn “S” – nó sẽ không cho phép thêm “S” vì “XS” có chuỗi “S” trong đó…

    Tôi cho rằng nó cần ngắt oldValue lên bằng dấu phẩy và so sánh từng chuỗi riêng lẻ

  2. Chris

    Cảm ơn vì đã đăng tải điều này. Tôi đã tìm kiếm một giải pháp cho vấn đề này trong một thời gian và không thể tìm thấy giải pháp nào hoạt động tốt. Tôi cũng đánh giá cao lời giải thích chi tiết. Nó rất hữu ích vì tôi đang cố gắng tự học các tập lệnh ứng dụng google

  3. arbin kumar

    Thông tin rất hữu ích. Cảm ơn vì kiến ​​thức

  4. DRT

    Điều này cực kỳ hữu ích - chính xác những gì tôi cần. Cảm ơn

  5. Ali

    Xin chào Sumit,

    Đây là lần đầu tiên tôi sử dụng google script. Nó hoạt động tuyệt vời. Cám ơn rất nhiều

  6. Elliott

    Cảm ơn bạn đã hướng dẫn rất hữu ích này. Làm cách nào để áp dụng tập lệnh này cho toàn bộ cột, trừ hai hàng tiêu đề trên cùng?

  7. Đập

    cảm ơn, nó đã hoạt động

  8. Tchad

    Bài viết tuyệt vời và chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn

  9. Ramlan

    Cảm ơn rất nhiều
    Nó giúp tôi rất nhiều

  10. Leslie Coster

    Cảm ơn bạn vì điều này, nó đã làm việc hoàn hảo cho tôi

  11. Hê-li

    Đánh giá cao hướng dẫn này, không hiểu tất cả mã nhưng giải thích của bạn rất hữu ích

  12. dấu

    Điều này cực kỳ hữu ích và dễ làm theo. Cảm ơn bạn đã đặt cái này lại với nhau

  13. Michael

    Tôi đang cố gắng làm cho toàn bộ cột này hoạt động. Tôi đã thay thế mã theo hướng dẫn sao cho nó chỉ trông giống một cột cụ thể. (Trong trường hợp của tôi, cột Q, là cột 17. ) Tuy nhiên, nó chỉ hoạt động trên một hàng, hàng 33

    Đây là mã tôi đang sử dụng

    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss=SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 17 && ss. getActiveSheet(). getName()==”Danh sách triển vọng chính”) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    if(oldValue. indexOf(newValue)
    activeCell. setValue(oldValue+', '+newValue);
    }
    else {
    activeCell. setValue(oldValue);
    }
    }
    }
    }
    }

    Tôi đang thiếu gì?

    • Michael

      Đừng bận tâm. tôi đã hiểu rồi. Bạn phải đặt xác thực dữ liệu thành chỉ cảnh báo, không từ chối đầu vào

  14. Cameron

    Trong phiên bản không lặp lại của bạn, bạn đã mắc một lỗi đánh máy nhỏ ở dòng 18 trong phiên bản của tôi

    tế bào hoạt động. setValue(oldValue+','+newValue);

    nên là

    tế bào hoạt động. setValue(oldValue+’, ‘+newValue);

    Kể từ đó, tôi đã tự sửa nó, nhưng những người khác có thể không nhận thấy điều này nếu vội vàng

    • FAdi

      xin lỗi không biết cách xóa bình luận ở trên, nhưng nó đã hoạt động

    • Leslie

      Những cái này trông giống với tôi?

      • Manuel

        Khoảng trống sau dấu phẩy 🙂

  15. Veronica Lin

    TÔI RẤT YÊU HƯỚNG DẪN CỦA BẠN. Rất dễ dàng, rất chính xác, rất chi tiết và hoàn hảo cho những người không có kiến ​​thức. Làm cho nó thực sự dễ dàng cho tôi

    Cảm ơn những người đã viết những điều này và/hoặc điều hành trang web

    Kinh ngạc

  16. Orivaldo

    rất tốt, và giải thích rất rõ ràng từng bước

    Chúc mừng bạn đã dạy để giải thích

    Nó rất hữu ích cho tôi

  17. Ricardo Quiroz

    Rất cám ơn về hướng dẫn của bạn, rất hữu ích. Tôi sẽ xem rắn các bài đăng khác của bạn

  18. Tyler

    Xin chào. Chỉ muốn chỉ ra một lỗi ở đây

    Trong phần “Nhiều lựa chọn trong danh sách thả xuống (Toàn bộ cột hoặc nhiều ô)”

    có đề xuất thay thế một dòng mã bằng dòng bên dưới.
    if(activeCell. getColumn() == 3 && ss. getActiveSheet(). getName()==”Sheet1″)

    Tuy nhiên, với tư cách là một lập trình viên mới vào nghề (Tôi là người quản lý thành công của khách hàng. P) Tôi không nhận ra rằng dấu ngoặc { bị bỏ ở cuối đoạn mã nên tôi đã không đưa nó vào Tập lệnh của mình

    Điều này gây ra một vấn đề phức tạp vì trên thực tế nó ĐÃ kích hoạt đa lựa chọn trong danh sách thả xuống, nhưng nó cũng làm cho bất kỳ văn bản nào khác mà tôi đã nhập vào các cột khác của bảng tính đều biến mất

    Chỉ muốn gắn cờ điều này để hy vọng cứu người khác khỏi nỗi đau

    • ô rô

      Nhận xét này đã cứu tôi. CẢM ƠN BẠN 🙂

      Hướng dẫn này thật tuyệt vời nhưng điều này cứ xảy ra với tôi – sau khi tôi nhập mã, tôi đã chọn nhiều mục trên trình đơn thả xuống nhưng mọi thứ khác tôi đặt trên trang tính sau đó đã biến mất. Nhưng việc thêm { vào cuối dòng mã if đã làm cho nó hoạt động CẢM ƠN BẠN

  19. S

    Cám ơn vì cái này. Rất rõ ràng và cực kỳ hữu ích

  20. Shalvi

    Xin chào,

    Mong bạn khỏe. Phải làm gì nếu tôi muốn áp dụng vlookup cho ô liền kề đã có nhiều lựa chọn và muốn ô liền kề đó đặt chính xác điều tương tự ở đó.
    Đối với người yêu cũ. Tôi có ba cột. Quốc gia, Châu lục, Khu vực. Vì vậy, giả sử nếu tôi chọn Ấn Độ trong quốc gia, vlookup sẽ tìm từ danh sách và xác định lục địa là Châu Á và khu vực là Nam Á.
    Bây giờ nếu tôi muốn chọn Ấn Độ và Hoa Kỳ trong nước, vlookup hiển thị cả Châu Á và Châu Mỹ trong lục địa và Nam Á và Bắc Mỹ trong khu vực.
    Mong bạn giúp đỡ.

  21. hoa hồng

    Cái này có vẻ không hiệu quả với tôi

    if(activeCell. getColumn() == 3 && ss. getActiveSheet(). getName()==”Sheet1″)

  22. hoa hồng

    Xin chào tôi nghĩ rằng tôi đã nhận nó. Activespreadsheet thay vì activesheet

    if(activeCell. getColumn() == 3 && ss. getActivesspreadSheet(). getName()==”Sheet1″)

    Cảm ơn nhiều

  23. Amy Bodien

    Xin chào,

    Tôi đang sử dụng hướng dẫn này và đã có thể tìm ra cách tạo thành công menu thả xuống đa lựa chọn cho toàn bộ cột, điều này thật tuyệt. Tuy nhiên, bất cứ khi nào tôi cố gắng chỉnh sửa bất kỳ ô nào khác trên tài liệu google excel, nó sẽ tự động xóa khi tôi nhấn enter hoặc nhấp ra khỏi ô. Bất kỳ ý tưởng về làm thế nào để sửa lỗi này?

  24. Heidi

    Tôi đang sử dụng giá trị này cho nhiều giá trị có cột 2 và 3 được chỉ định trên một trang tính cụ thể trong sổ làm việc. nhưng nó dường như làm điều đó cho mọi ô trong mọi sổ làm việc

    • Heidi

      xin lỗi ý tôi là mọi ô trong mọi trang tính trong sổ làm việc

      • kỷ nguyên

        Tôi cũng bị như vậy 🙁
        Có ai biết cách khắc phục không?

        • maria

          Nó hoạt động hoàn hảo trên trang tính đã chọn/xác định (có nghĩa là mã sẽ chỉ ảnh hưởng đến các ô đã chọn) nhưng trong tất cả các trang tính khác, mọi ô đều bị ảnh hưởng ngay cả khi nó không chứa menu thả xuống. Vì vậy, bất cứ khi nào bạn thêm một cái gì đó vào nội dung ô trước đó, nội dung sẽ nhân lên. <. -<8

      • Cristian

        Xin chào, hãy thử sử dụng toán tử OR cho hàng tập lệnh sau

        if(activeCell. getColumn() == 3. tế bào hoạt động. getColumn() == 6. tế bào hoạt động. getColumn() == 11 && ss. getActiveSheet(). getName()==”Finished/Watched”) {

        • MJ

          Cảm ơn Cristian, mã hai tuần của bạn đã giúp tôi

          Toán tử OR hạn chế mã áp dụng ở nơi khác trên bảng tính

  25. Dannie

    Vì vậy, tôi đã thử sử dụng cái này hôm nay và phát hiện ra một vấn đề với

    if(activeCell. getColumn() == 3. 6 && ss. getActiveSheet(). getName()==”Sheet1″)

    Tôi nhận thấy rằng nó đang gây ra sự cố trong đó tất cả các ô trên trang tính và các trang tính khác đều được áp dụng điều này. Tôi đã giải quyết nó bằng cách sử dụng lệnh sau cho AND

    //để dễ dàng tham khảo cột 13=M
    var activecolumn = activeCell. getColumn();
    if((cột hoạt động >= 13 && cột hoạt động

    nếu bạn vẫn muốn sử dụng OR thay vào đó, bạn có thể sử dụng một cái gì đó như

    var active = activeCell. getColumn();
    if((hoạt động == 13. đang hoạt động == 14. đang hoạt động == 18. đang hoạt động == 22) && ss. getActiveSheet(). getName()=='Sheet1')

    • JaLisa

      cảm ơn bạn. Tôi đã thực sự vật lộn, nhưng điều này đã làm việc. 🙂

  26. Saurabh

    Có một vấn đề với kịch bản này. Mặc dù nó hoạt động trơn tru cho tác vụ cụ thể ở trên, nhưng khi tôi sao chép và dán bất kỳ cột nào khác (mà tôi chưa đưa vào tập lệnh) vào một tab trang tính khác, một số giá trị sẽ tự động bị xóa

    Tôi tự hỏi tại sao điều này lại xảy ra. Sau đó, tôi đã thử xóa tập lệnh và dán lại, sau đó nó hoạt động tốt và tất cả các giá trị được dán mà không bị xóa. Vì vậy, tôi chắc chắn có điều gì đó không ổn với kịch bản, nhưng không thể tìm ra đó là gì. Hãy giúp tôi

  27. giải Oscar

    Khi tôi sử dụng mã “Cho phép nhiều lựa chọn trong danh sách thả xuống (không lặp lại)”, tôi nhận thấy rằng mọi ô trong trang tính đều được áp dụng logic lạ. Nếu tôi chọn một ô không có menu thả xuống và điền vào ô đó bất kỳ thứ gì, sau đó thử ghi đè lên ô đó bằng một thứ gì đó mới, ô đó sẽ cập nhật sau một giây và kết hợp giá trị ban đầu với giá trị mới. Làm cách nào để ngăn điều này xảy ra vì rất khó chịu khi xóa ô trước khi nhập giá trị mới. Sao chép và dán cũng là một cơn ác mộng

  28. Martin

    Xin chào Sumit, cảm ơn vì điều này, nó thực sự hữu ích. Tôi đã sao chép mã và điều chỉnh nó cho bảng tính của mình và nó hoạt động tốt khi tôi áp dụng mã đó cho một cột (cột N). Tôi muốn thêm tùy chọn vào cột thứ hai (cột O) và thay thế dòng mã như đề xuất.
    if(activeCell. getColumn() == 14 && ss. getActiveSheet(). getName()==”Nghiên cứu”)
    với
    if(activeCell. getColumn() == 14. 15 && ss. getActiveSheet(). getName()==”Research”)
    tuy nhiên, nó đã áp dụng nó cho toàn bộ bảng tính, thay vì chỉ hai cột. Tôi có làm gì sai không?

  29. Scott K

    Tôi không thể làm cho đa lựa chọn hoạt động. Danh sách của tôi ngắn (chỉ có bốn mục) và tôi đã thử áp dụng tập lệnh cho một ô và cũng đã thử áp dụng cho nhiều ô. Tôi đã làm việc này trong Excel và hiện đang cố gắng sao chép trong Google Trang tính để nhóm của chúng tôi có thể truy cập dễ dàng trên nhiều nền tảng. Danh sách thả xuống của tôi đang hoạt động, không phải đa lựa chọn.
    Mọi lời khuyên sẽ được đánh giá cao vì tôi đã thử các tùy chọn khác từ các trang web khác nhau rồi.
    Cảm ơn Sumit.

  30. Leonardo

    Đó là nội dung rất tốt. Cám ơn vì đã chia sẻ

  31. Nabiha

    CẢM ƠN BẠN SUMIT, ĐIỀU NÀY GIÚP TÔI RẤT NHIỀU

  32. hà nội

    Điều này thật tuyệt. Làm thế nào để bạn viết trong một số hàng cụ thể?

    Tôi muốn điều này áp dụng cho tất cả các hàng trong cột C ngoại trừ hàng đầu tiên (hàng tiêu đề) thì làm cách nào để viết điều đó vào?

  33. Sarah

    Xin chào,
    cảm ơn bạn đã giải thích rõ ràng, rất phù hợp cho người mới bắt đầu 🙂
    Nhưng tôi vẫn có một câu hỏi … làm cách nào để nhập một . Thích. nó sẽ bắt đầu ở hàng 2 và kết thúc ở hàng 20.

    Cảm ơn,
    Sarah

  34. JG

    Xin chào,

    Với cách sử dụng 'mã không lặp lại', làm thế nào để bạn lấy dữ liệu nguồn từ một trang tính khác như Trang tính 2 A2. A8 trong khi điền Bảng 1 Cột C?

    Cảm ơn bạn

  35. Jennifer

    Nếu tôi cần có nhiều lựa chọn cho một cột cho 5 sheet khác nhau, tôi có cần nhập mã 5 lần không?

    Bất kỳ phương pháp nào khác nhanh hơn?

    Cảm ơn bạn

  36. Jokowi

    Tôi đang sử dụng đoạn mã sau, có vẻ như nó không hoạt động bình thường

    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 3. 6. 9 && ss. getActiveSheet(). getName()==”Sheet1″)

    Vì “Multiple Selection in Drop Down” không chỉ được áp dụng cho cột C, F, I mà còn áp dụng cho tất cả các cột

    Sau đó, tôi tìm kiếm các tài liệu tham khảo và tìm thấy mã hoạt động

    var activeCell = ss. getActiveCell();
    var active = activeCell. getColumn();
    if((active == 3. đang hoạt động == 6. đang hoạt động == 9) && ss. getActiveSheet(). getName()==”Sheet1″)

    Tôi không biết nếu phương pháp này cũng hoạt động trong các trường hợp khác. Nhưng cách này hoạt động trong trường hợp của tôi cần nhiều hơn hai cột

    • Bindu

      Tôi gặp lỗi bên dưới nếu cố gắng thêm mã của bạn
      Ngoại lệ. Vui lòng chọn một trang tính đang hoạt động trước.
      onEdit @ MS Cột 12. gs. 5
      Cố gắng đạt được. Nhiều lựa chọn khác nhau cho nhiều cột trong cùng một trang tính Google. Tôi đã thử thêm tập lệnh mới và nó luôn vô hiệu hóa tập lệnh trước đó.
      Mã bên dưới.
      function onEdit(e) {
      var oldValue;
      var newValue;
      var ss . getActiveSpreadsheet();
      var activeCell = ss. getActiveCell();
      var active = activeCell. getColumn();
      if((active == 12. đang hoạt động == 13. đang hoạt động == 14. hoạt động == 15. đang hoạt động == 16. đang hoạt động == 17. đang hoạt động == 18. đang hoạt động == 19) && ss. getActiveSheet(). getName()==”Yêu cầu Yêu cầu”) {
      newValue=e. giá trị;
      oldValue=e. oldValue;
      if(. e. value) {
      activeCell. setValue(“”);
      }
      else {
      if (. e. oldValue) {
      activeCell. setValue(newValue);
      }
      else {
      activeCell. setValue(oldValue+', '+newValue);
      }
      }
      }
      }

  37. Jokowi

    Có thể tạo đầu ra được nhấp theo chiều dọc cho mỗi từ (như tạo một dòng mới) thay vì theo chiều ngang không?

  38. DM

    Cảm ơn bạn đã chia sẻ kịch bản này. Nó vô cùng hữu ích. Tôi có thể làm cho nó hoạt động hoàn hảo nếu phạm vi tùy chọn thả xuống nằm trên cùng một trang với trình đơn thả xuống, nhưng làm cách nào để sửa đổi mã để chọn nhiều tùy chọn khi phạm vi lựa chọn nằm trong một trang tính khác trong sổ làm việc?

  39. DM

    Điều này rất hữu ích. Trục trặc nhỏ duy nhất mà tôi gặp phải là nó thực hiện điều này cho mọi ô trong sổ làm việc, bất kể đó có phải là danh sách thả xuống hay không. Làm cách nào để giới hạn nó chỉ trong các ô có trình đơn thả xuống?

  40. Seth

    Xin chào Sumit. Điều này rất hữu ích. Tôi đã nghĩ ra một phiên bản đơn giản hóa của những gì bạn đã tạo, phiên bản này hoạt động trên bất kỳ ô nào được chỉnh sửa trong trang tính, miễn là ô đó là một phần của dải ô đã bật "xác thực dữ liệu" thành "chọn từ danh sách". Nó cũng làm giảm bớt nhu cầu tìm hiểu xem bạn đang ở ô nào, vì e. phạm vi là. Chúng ta chỉ cần xác nhận rằng e. giá trị và e. oldValue tồn tại, vì nếu không thì nó không phải là một ô

    Dù sao thì, đây là những gì tôi nghĩ ra.
    const dấu phân cách = ‘, ‘

    function onEdit(e) {
    if (e. giá trị. = null && e. giá trị cũ. = null && e. giá trị. == “”) {
    var dataValidation = e. phạm vi. getDataValidation();
    if(dataValidation. = null && xác thực dữ liệu. getCriteriaType() == Ứng dụng bảng tính. DataValidationTiêu chí. VALUE_IN_RANGE) {
    if(e. giá trị. indexOf(dấu phân cách) < 0 && e. giá trị cũ. indexOf(e. giá trị) < 0) {
    e. phạm vi. setValue(e. oldValue + dấu tách + e. value);
    }
    }
    }
    }

    Tôi cũng đã đưa cái này vào Gist.
    https. //ý chính. github. com/sschwartzman/ed34dec66231acd9092051170d0ed6dc

    • Yogesh

      TUYỆT VỜI EEEEEEEEEEEE

      Còn nhiều nữa EEEEEE

      Đây chính xác là tôi cần, một mã sẽ hoạt động cho tất cả các ô, trong toàn bộ SHEETTTTTT

      YiiiPiiiiiiiiiiiiiiiiiii

      Cảm ơn Tôn SETH và SUMIT

    • BƯỚC

      Tôi vừa sử dụng mã này và nghĩ rằng mình đã làm sai điều gì đó nhưng NÓ ĐÃ HOẠT ĐỘNG. Cảm ơn bạn rất nhiều vì phiên bản đơn giản hóa này. Tôi không rành công nghệ chút nào và tôi rất vui vì tôi đã nhận được thứ này quá nhanh

  41. Taryn

    Cảm ơn bạn rất nhiều. Đây chính xác là những gì tôi đang tìm kiếm

  42. Ellie

    Tôi đang cố làm cho cái này hoạt động cho hai cột nên tôi có cái này.
    if(activeCell. getColumn() == 4. 17 && ss. getActivesspreadSheet(). getName()==”Trang tính 1″)

    nhưng nó chỉ áp dụng cho cột 4 và nó không hoạt động cho cột 17, có ý kiến ​​​​gì không?

    • amanda

      Bạn phải thêm “activeCell. getColumn() ==” mã cho rằng ý của bạn là “là cột 4 hoặc số 17 và là trang tính 1”. Số 17 sẽ luôn đánh giá là đúng. Bạn cũng sẽ cần dấu ngoặc đơn vì nó mặc định là “giá trị. ( value && value)” không phải là thứ bạn muốn ở đây

      if((activeCell. getColumn() == 4. tế bào hoạt động. getColumn() == 17 ) && ss. getActivesspreadSheet(). getName()==”Trang tính 1″)

  43. Liz

    Đây là thông tin hữu ích cho người không phải là lập trình viên, nhưng tôi không biết phải làm gì nếu muốn áp dụng mã nhiều lựa chọn cho các cột khác nhau trong nhiều Trang tính trong sổ làm việc của mình. Bất kỳ hướng chào đón

  44. laoise

    Cám ơn rất nhiều vì đã hướng dẫn. Tôi đang tự hỏi mình sẽ phải thêm gì để liên kết hộp thả xuống của mình với một câu hỏi trên Google Biểu mẫu?

  45. SB

    Bạn có thể làm điều này để các lựa chọn được liệt kê (xếp chồng lên nhau) trong ô thông qua ngắt dòng thay vì được phân tách bằng dấu phẩy không?

  46. Ryan Hammer

    Tôi gần như không biết gì về viết mã, nhưng tôi đang cố gắng đạt được một số điều cơ bản khi cần thiết. Đây là một bài viết rất hữu ích. Tôi sẽ làm thêm một số nghiên cứu và thử nghiệm. Trong trường hợp điều này mang lại giải pháp sớm hơn, có ai biết cách thêm hoặc sửa đổi điều này để việc chọn một tùy chọn đã được hiển thị sẽ xóa tùy chọn đó khỏi các mục được hiển thị trong ô không?

  47. Lex

    Điều này rất hữu ích, cảm ơn bạn

    Có cách nào để tôi có thể xóa biến sau khi đã chọn không?

  48. Valérie

    Xin chào,
    Rất hữu ích. Cảm ơn.
    Bạn có ý tưởng nào về cách chúng tôi có thể thay thế dấu phân cách dấu phẩy bằng dấu ngắt dòng trong ô không?
    Cảm ơn.

  49. Valérie

    Tôi cũng thế. Không thể tìm ra nó

  50. bia

    Có thể tránh nhập văn bản tự do trong ô không? . Táo, Chuối và Kiwi sẽ tạo ra tế bào (i. e. C1) để hiển thị. Táo, Chuối, Kiwi

    Sau đó tôi có thể quay lại C1 và gõ Strawberry; . Táo, Chuối, Kiwi, Dâu tây

    Có mã nào có thể được thêm vào đây để ghi đè văn bản đã nhập không đến từ Xác thực dữ liệu không?

  51. RJ

    Làm thế nào để bạn sử dụng điều này với 2 hoặc nhiều trang tính với các cột khác nhau bị ảnh hưởng trên mỗi trang tính?

    • François

      Xin chào RJ,
      Bạn đã tìm ra giải pháp chưa? .
      Cảm ơn
      Francois

  52. Neringa

    Cảm ơn bạn rất nhiều. Rất hữu ích. Không chỉ bản thân bài viết mà cả phần bình luận 🙂

  53. François

    Tốt đẹp. Cám ơn vì đã chia sẻ

  54. Kasim Yusuf

    Xin chào Sumit… Điều này thực sự hữu ích nhưng bạn có thể giúp tôi mã mà tôi có thể sử dụng trên một tệp có nhiều tab (tối thiểu) và nhiều lựa chọn thả xuống nằm trong ít nhất 3 cột trên mỗi tab không?

  55. Bindu

    Khi tôi đang cố triển khai Nhiều lựa chọn trong Danh sách thả xuống (Toàn bộ cột), tôi gặp phải lỗi sau “TypeError. Không thể đọc thuộc tính 'giá trị' của undefined
    onEdit @ Multi Select Column 12. gs. 7” — Xin lưu ý rằng các giá trị trong danh sách chọn của tôi nằm trong trang 2. Tôi cũng đã cố gắng có các giá trị trong 'Yêu cầu Yêu cầu', nhưng tiếc là nó không hoạt động. Ai đó có thể giúp tôi không?
    Tôi đang dán mã của mình bên dưới.
    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss . getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 12 && ss. getActiveSheet(). getName()==’Yêu cầu Yêu cầu’) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    if(oldValue. indexOf(newValue)
    activeCell. setValue(oldValue+','+newValue);
    }
    else {
    activeCell. setValue(oldValue);
    }
    }
    }
    }
    }

  56. Nik

    Cảm ơn bạn

  57. Renee

    Tôi đã cắm cái này vào trang tính của mình và đa lựa chọn thả xuống đang hoạt động nhưng nói rằng tôi muốn bỏ chọn một câu trả lời thì nó sẽ không bỏ chọn?

    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss=SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 13 && ss. getActiveSheet(). getName()==’Phản hồi biểu mẫu 1′) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    if(oldValue. indexOf(newValue)
    activeCell. setValue(oldValue+','+newValue);
    }
    else {
    activeCell. setValue(oldValue);
    }
    }
    }
    }
    }

  58. macca

    hoạt động như được mô tả cho toàn bộ cột kéo từ một phạm vi trong một trang tính khác, không lặp lại, dễ dàng, sao chép/dán, 2 phút sau… hoàn tất – bạn hoàn toàn hài lòng.
    Cảm ơn

  59. Tâyna

    Cảm ơn, điều này hiệu quả với tôi, tôi ước một ngày nào đó tôi cũng học được điều này 🙂

  60. amanda

    Phiên bản sạch hơn.
    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss . getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn(). = 2. tế bào hoạt động. getRow() == 1. ss. getActiveSheet(). getName(). = “Sheet1”) {
    return
    }
    newValue = e. giá trị;
    oldValue = e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    return
    }

    nếu (. e. oldValue) {
    activeCell. setValue(newValue);
    return
    }

    ô hoạt động. setValue(oldValue+’, ‘+newValue);
    }

  61. cướp

    Rất cảm kích. Bạn có thể đề xuất cách khắc phục nào cho vấn đề mà bạn tự tham khảo về việc không thể chỉnh sửa ô mà bạn đã thêm nội dung theo cách thủ công không? . Đây là với mã bổ sung của bạn để tránh trùng lặp.
    Cảm ơn.

  62. malina

    Cách thực hiện với giao diện Google Sheets mới. Trình chỉnh sửa tập lệnh đã biến mất, được thay thế bằng Apps Script, thứ gây đau đầu khi sử dụng hoặc hiện không thực sự hoạt động, ai biết được?

    • Christopher Daniel

      Hiện tại, bạn vẫn có thể sử dụng trình chỉnh sửa cũ thông qua lựa chọn khi vào màn hình lần đầu

  63. Asha J

    Xin chào. Điều này hoạt động hoàn hảo cho một trang tính, tuy nhiên tôi cần có thể sao chép trang tính và tập lệnh vẫn hoạt động. Làm cách nào để tôi thực hiện điều đó mà không phải vào và thay đổi tập lệnh theo cách thủ công mỗi khi tôi sao chép tập lệnh đó?

  64. Pramod

    Tôi đang sử dụng mã sau đây cho Nhiều danh sách thả xuống cho toàn bộ cột.
    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss . getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 2 && ss. getActiveSheet(). getName()==”Sheet1”) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    activeCell. setValue(oldValue+', '+newValue);
    }
    }
    }
    }

  65. Nancy

    Xin chào. Có thể cho phép sao chép và dán vào các ô có nhiều lựa chọn này không?
    Tôi đã sử dụng mã thành công cho các cột có nhiều lựa chọn và muốn có thể cập nhật hàng loạt ô thông qua sao chép và dán .
    Thanks in advance for your help!

  66. David Miles

    Tôi không thể làm cho ứng dụng này hoạt động và tôi nghĩ đó là do đã xảy ra sự cố khi sử dụng. setValue() trong hàm onEdit. Mọi thứ khác đang hoạt động.
    Bạn có ý tưởng nào về cách giải quyết vấn đề này không?

  67. David Miles

    Tôi đã tìm ra lỗi là gì. Đây là mã tôi đã sử dụng để tạo xác thực dữ liệu
    let ruleNewOwners = SpreadsheetApp. newDataValidation()
    . requireValueInRange(listValues)
    . setAllowInvalid(false)
    . setHelpText('Chọn chủ sở hữu nhóm từ danh sách')
    . xây dựng();

    Tôi phải đổi thành. setAllowInvalid(true) và sau đó nó hoạt động ngay lập tức và hoàn hảo.
    *thở dài

    • Justin

      Làm cách nào để tìm mã này để. setAllowInvald(đúng)?

      Tôi đã tạo danh sách thả xuống xác thực dữ liệu thông qua hướng dẫn này, không phải thông qua mã, ban đầu

  68. Sư Tử

    Đây là một hướng dẫn tuyệt vời, cảm ơn bạn

    Tôi đã có thể áp dụng Tập lệnh này cho nhiều trang tính bằng cách thêm ,’sheet_name’) sau tên trang tính đầu tiên

    Có ai ở đây biết cách áp dụng tập lệnh cho tất cả các trang tính không?

  69. Taylor

    Làm cách nào để lấy mã này để áp dụng cho nhiều trang tính?

    Tôi đã thử cách này.
    if(activeCell. getColumn() == 6 && ss. getActiveSheet(). getName()==”Taylor. TS”. ”Taylor. TS. 7/18″)

    Nó vẫn hoạt động NHƯNG tôi gặp sự cố với các ô khác trên trang tính không giữ định dạng của chúng sau khi dữ liệu bị xóa và nhập lại. Nó ("123") luôn chuyển về chế độ tự động. Ngày đang được thay đổi thành số thập phân. Chỉ xảy ra khi tôi cố gắng áp dụng điều này cho nhiều trang tính trong tệp

    Bất kỳ sự giúp đỡ nào cũng được đánh giá cao

  70. Kristof D

    Hướng dẫn tuyệt vời.
    Tôi chỉ gặp một vấn đề. Tôi rõ ràng muốn có thể chọn cùng một tùy chọn nhiều lần nhưng có vẻ như nó không hoạt động nếu tôi trực tiếp chọn cùng một tùy chọn sau khi đã chọn cùng một tùy chọn. OnEdit dường như không được kích hoạt nếu giá trị không thực sự thay đổi trước.
    Vì vậy, tôi có thể chọn 'táo, chuối, táo' chứ không phải 'táo, táo' vì không có thao tác 'chỉnh sửa' thực sự nào được kích hoạt.
    Có cách giải quyết không?

  71. Victoria

    Điều này rất hữu ích, cảm ơn bạn. Sẽ thật tuyệt nếu bạn có thể thêm một dòng để sắp xếp các mục theo thứ tự bảng chữ cái, nếu không, nếu một người nhấp vào một số mục theo thứ tự khác nhau cho các hàng khác nhau, chẳng hạn như khi chúng tôi lọc nó, nó sẽ xuất hiện dưới dạng các mục khác nhau

    Táo, Lê, Cam
    Lê, Táo, Cam
    Cam, Táo, Lê

    Về cơ bản, chúng giống nhau (nếu thứ tự không quan trọng) nhưng đây sẽ giống như 3 thứ riêng biệt khi bạn đặt bộ lọc cho cột. Bạn có thể đề xuất một dòng có thể giúp sắp xếp những thứ này theo thứ tự bảng chữ cái để người đó chọn thứ tự thả xuống không quan trọng?

  72. Charles

    Mã hoạt động, nhưng khi tôi ghi đè lên giá trị trong ô, giá trị cũ vẫn còn trong ô. Tôi nên thay đổi phần nào của mã để ngăn điều này xảy ra?

  73. Stephanie

    Tôi liên tục gặp lỗi - Thông báo đã cố thực thi onEdit nhưng không thể lưu. Giờ thì sao?

  74. Jen A

    Có cách nào để cái này chạy trên nhiều cột không? . Tôi đã có thể làm việc trên nhiều hàng chứ không phải cột

  75. Nic

    Sumit, cảm ơn bạn rất nhiều vì thông tin này (và cả các hướng dẫn khác nữa). Tôi KHÔNG phải là lập trình viên nhưng thực sự đánh giá cao hướng dẫn của bạn vì tôi đã cố gắng làm cho Google Trang tính hoạt động hiệu quả hơn trong khi bị hạn chế vì lý do chỉnh sửa nhóm. Thực sự–giữa các hướng dẫn của bạn và các nhận xét, tôi đã thành công và ngạc nhiên là nó đang hoạt động

  76. gaelle

    Tôi đặt chức năng này

    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss=SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 19 && activeCell. getRow() == 2 && ss. getActiveSheet(). getName()==’Sheet1′) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    if(oldValue. indexOf(newValue)
    activeCell. setValue(oldValue+', '+newValue);
    }
    else {
    activeCell. setValue(oldValue);
    }
    }
    }
    }
    }

    Nó báo lỗi ở dòng 5. var activeCell = ss. getActiveCell();

    Tôi không thể tìm thấy vấn đề bạn có thể giúp

  77. gaelle

    Tôi đặt chức năng này

    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss=SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 19 && activeCell. getRow() == 2 && ss. getActiveSheet(). getName()==’Sheet1′) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    if(oldValue. indexOf(newValue)
    activeCell. setValue(oldValue+', '+newValue);
    }
    else {
    activeCell. setValue(oldValue);
    }
    }
    }
    }
    }

    Nó báo lỗi ở dòng 5. var activeCell = ss. getActiveCell();

    Tôi không thể tìm thấy vấn đề bạn có thể giúp

  78. Có một

    Chào bạn,

    Mình rất xin lỗi vì đã làm phiền các bạn, mình là newbie và hơi lạc đề. Tôi đang cố gắng làm điều này hiệu quả cho toàn bộ cột “G”. Tôi đã cố gắng điều chỉnh nó khi đọc các bình luận, tôi vẫn không thể chọn nhiều tùy chọn. Có lẽ đó là lỗi đơn giản của người mới bắt đầu. Có lời khuyên nào không?

    function onEdit(e) {
    var oldValue;
    var newValue;
    var ss=SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = ss. getActiveCell();
    if(activeCell. getColumn() == 6 && activeCell. getLastRow && ss. getActiveSheet(). getName()==”Sheet1″) {
    newValue=e. giá trị;
    oldValue=e. oldValue;
    if(. e. value) {
    activeCell. setValue(“”);
    }
    else {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    }
    else {
    activeCell. setValue(oldValue+', '+newValue);
    }
    }
    }
    }

  79. haro

    Chỉ trong trường hợp bạn muốn xóa newValue nếu nó đã tồn tại trong oldValue

    function onEdit(e) {
    var oldValue;
    var newValue;
    var Spreadsheet = SpreadsheetApp. getActiveSpreadsheet();
    var activeCell = bảng tính. getActiveCell();
    if (activeCell. getColumn() == 6 && activeCell. getRow() > 1 && bảng tính. getActiveSheet(). getName() == “Bản nháp”) {
    newValue = e. giá trị;
    oldValue = e. oldValue;
    if (. e. value) {
    activeCell. setValue(“”);
    } other {
    if (. e. oldValue) {
    activeCell. setValue(newValue);
    } other {
    if (oldValue. indexOf(newValue) < 0) {
    activeCell. setValue(`${oldValue}, ${newValue}`);
    } other {
    var array = oldValue. split(", ");
    mảng = mảng. bộ lọc(hàm(phần tử) {
    trả về phần tử. == newValue;
    })
    activeCell. setValue(mảng. tham gia(", "));
    }
    }
    }
    }}}}}}}}}}}}}}}}}}}}}
    }

  80. Ariana

    Làm cách nào để chỉnh sửa mã nếu danh sách mặt hàng của tôi nằm trên một trang tính riêng biệt đến nơi tôi muốn danh sách thả xuống? . Danh sách các mục của tôi nằm trên một trang tính riêng có tên là Danh sách ứng dụng trong Cột A. Cảm ơn bạn đã giúp đỡ

    Có cách nào để thêm thẻ trong Google Trang tính không?

    Phương pháp đơn giản nhất trong Bảng tính Google là tạo Biểu mẫu có trường thẻ chứa các giá trị được xác định trước . Kết nối biểu mẫu với bảng tính của bạn. Người dùng sẽ điền vào biểu mẫu trực tuyến từ máy tính hoặc điện thoại di động của họ và chọn các thẻ từ trình đơn thả xuống.

    Bạn có thể chọn nhiều mục từ một danh sách trong Google Trang tính không?

    Rất tiếc, theo truyền thống, tùy chọn này không được phép trong Google Trang tính. Bạn chỉ được phép có một lựa chọn tại một thời điểm. Tin tốt là có một cách giải quyết vấn đề này. Có thể làm cho danh sách thả xuống của bạn cho phép nhiều lựa chọn bằng cách sử dụng Google AppScript .