Kode berikut akan menambahkan menu ke Spreadsheet:
Detektif> Lacak Tanggungan
Memilih ini akan menambahkan catatan ke sel aktif dengan semua referensi sel tergantung.
(menambahkan pencarian untuk referensi statis seperti yang disarankan oleh Graham di bawah)
Anda bisa menambahkan fungsi serupa ke fungsi traceDependents untuk mencari teks di dalam sel aktif untuk fungsi Search in Formulas. Saya akan meninggalkan itu sebagai latihan untuk Anda.
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = []
menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});
ss.addMenu("Detective", menuEntries);
}
function traceDependents(){
var dependents = []
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentCell = ss.getActiveCell();
var currentCellRef = currentCell.getA1Notation();
var range = ss.getDataRange();
var regex = new RegExp("\\b" + currentCellRef + "\\b");
var formulas = range.getFormulas();
for (var i = 0; i < formulas.length; i++){
var row = formulas[i];
for (var j = 0; j < row.length; j++){
var cellFormula = row[j].replace(/\$/g, "");
if (regex.test(cellFormula)){
dependents.push([i,j]);
}
}
}
var dependentRefs = [];
for (var k = 0; k < dependents.length; k ++){
var rowNum = dependents[k][0] + 1;
var colNum = dependents[k][1] + 1;
var cell = range.getCell(rowNum, colNum);
var cellRef = cell.getA1Notation();
dependentRefs.push(cellRef);
}
var output = "Dependents: ";
if(dependentRefs.length > 0){
output += dependentRefs.join(", ");
} else {
output += " None";
}
currentCell.setNote(output);
}
Ini luar biasa. Saya pikir Anda dapat menghapus baris tambahan: var output = "Dependents:";
jaredcohe
Tertangkap dengan baik. Saya sudah menghapusnya. Terima kasih untuk mata elang.
Tom Horwood
Saya sangat suka ini! Apakah saya melihatnya dengan benar sehingga tidak mendukung Named Ranges? Dan jika itu masalahnya, apakah sederhana / rumit untuk menambahkan dukungan?
Wizek
2
Bagaimana cara menggunakan kodenya?
Ferrybig
1
mengapa garis menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});muncul dua kali dalam kode?
ThomasMcLeod
4
Ini super dan telah menyelamatkan saya banyak pekerjaan - terima kasih.
Namun jawaban di atas tidak menemukan referensi yang menggunakan fixer baris atau kolom $.
Perubahan kecil berikut untuk kode mencapai itu:
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = []
menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});
ss.addMenu("Detective", menuEntries);
}
function traceDependents(){
var dependents = []
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentCell = ss.getActiveCell();
var currentCellRef = currentCell.getA1Notation();
var range = ss.getDataRange();
var regex = new RegExp("\\b" + currentCellRef + "\\b");
var formulas = range.getFormulas();
for (var i = 0; i < formulas.length; i++){
var row = formulas[i];
for (var j = 0; j < row.length; j++){
var cellFormula = row[j].replace(/\$/g, "");
if (regex.test(cellFormula)){
dependents.push([i,j]);
}
}
}
var dependentRefs = [];
for (var k = 0; k < dependents.length; k ++){
var rowNum = dependents[k][0] + 1;
var colNum = dependents[k][1] + 1;
var cell = range.getCell(rowNum, colNum);
var cellRef = cell.getA1Notation();
dependentRefs.push(cellRef);
}
var output = "Dependents: ";
if(dependentRefs.length > 0){
output += dependentRefs.join(", ");
} else {
output += " None";
}
currentCell.setNote(output);
}
Terima kasih; ini agak membantu. Bagaimana cara membuatnya bekerja di seluruh lembar kerja?
wizonesolutions
Terima kasih Graham - Saya telah memasukkan perubahan Anda. Untuk bekerja di lembar kerja, kode ini perlu sedikit penyesuaian untuk memasukkan nama lembar dan kemudian loop melalui masing-masing lembar
menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});
muncul dua kali dalam kode?Ini super dan telah menyelamatkan saya banyak pekerjaan - terima kasih.
Namun jawaban di atas tidak menemukan referensi yang menggunakan fixer baris atau kolom
$
.Perubahan kecil berikut untuk kode mencapai itu:
sumber