গুগল স্প্রেডশিটে, কোন সূত্র প্রদত্ত মানকে উল্লেখ করে তা সন্ধান করা


17

বৃহত স্প্রেডশিটে কোন কোষের সূত্র নির্ভরতা রয়েছে তা আমি জানতে চাই। আমি ওপেন অফিসের মতো কিছু করার উপায় খুঁজছি

সরঞ্জামগুলি> গোয়েন্দা> নির্ভরশীলদের সন্ধান করুন

এবং

সূত্রগুলিতে সম্পাদনা করুন> সন্ধান করুন এবং প্রতিস্থাপন করুন> অনুসন্ধান করুন

বা জিএএস-তে একটি ট্রিগার তৈরি করার একটি উপায় যা প্রদত্ত ঘরের মানটি উল্লেখ করা হয় এবং রেফারেন্সের উত্স সনাক্ত করতে পারে called

উত্তর:


12

নিম্নলিখিত কোডটি স্প্রেডশিটে একটি মেনু যুক্ত করবে:

গোয়েন্দা> নির্ভরশীলদের সন্ধান করুন

এটি নির্বাচন করা সমস্ত নির্ভরশীল সেল রেফারেন্স সহ সক্রিয় কক্ষে একটি নোট যুক্ত করবে।

(নীচে গ্রাহামের পরামর্শ অনুসারে স্থির রেফারেন্সের জন্য অনুসন্ধান যুক্ত করা হয়েছে)

সূত্র ফাংশনে সন্ধানের জন্য সক্রিয় কক্ষে পাঠ্য সন্ধান করতে আপনি ট্রেসডিপেন্ডেন্টস ফাংশনে অনুরূপ ফাংশন যুক্ত করতে পারেন। আমি এটি আপনার অনুশীলন হিসাবে ছেড়ে দেব।

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);
}

এটা ভয়ঙ্কর। আমি মনে করি আপনি অতিরিক্ত লাইনটি সরাতে পারবেন: var আউটপুট = "নির্ভরশীল:";
jaredcohe

ভালই ধরা পড়েছে। আমি এটি সরিয়েছি। Agগল চোখের জন্য ধন্যবাদ।
টম হরউড

আমি এটা বেশ পছন্দ করি! আমি কি এটি সঠিকভাবে দেখতে পাচ্ছি যে এটি নামযুক্ত রেঞ্জগুলি সমর্থন করে না, যদিও? এবং যদি এটি হয় তবে সমর্থন যোগ করা কি সহজ / জটিল হবে?
উইজেক

2
কোডটি কীভাবে ব্যবহার করবেন?
ফেরিবিগ 10:58

1
কোডটিতে লাইনটি কেন menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});দু'বার প্রদর্শিত হবে?
থমাসম্যাকলিউড

4

এটি দুর্দান্ত এবং আমাকে অনেক কাজ বাঁচিয়েছে - ধন্যবাদ।
তবে উপরের উত্তরটিতে সারি- বা কলাম-ফিক্সার ব্যবহার করা কোনও রেফারেন্স পাওয়া যায় না $
নিম্নলিখিত কোডে সামান্য পরিবর্তন তা সম্পাদন করে:

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);
}

ধন্যবাদ; এটি কিছুটা সাহায্য করেছিল। কীভাবে একজন এটির কার্যপত্রক জুড়ে কাজ করবে?
উইজোনসোলিউশনগুলি

ধন্যবাদ গ্রাহাম - আমি আপনার পরিবর্তনগুলি অন্তর্ভুক্ত করেছি। ওয়ার্কশিট জুড়ে কাজ করার জন্য, কোডটির শিটের নাম অন্তর্ভুক্ত করার জন্য কিছুটা সামঞ্জস্য করতে হবে এবং তারপরে প্রতিটি শিটের মধ্য দিয়ে লুপ করতে হবে
টম হোরউড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.