গুগল স্প্রেডশিট কলামে স্বতন্ত্রতা জোর করা


37

আমি একটি গুগল স্প্রেডশিট তৈরি করেছি (একটি ডাটাবেস হিসাবে অভিনয় করে) যার মধ্যে অনেকগুলি কলাম রয়েছে, নাম তাদের মধ্যে একটি, এবং আমি নিশ্চিত করতে চেয়েছিলাম যে নাম ক্ষেত্রটি সর্বদা অনন্য এবং নাম ক্ষেত্রটি অন্যটির মতো হলে কোনও সারি তৈরি করা যায় না সারি।

মূলত আমি একটি ডাটাবেসের জন্য একটি প্রাথমিক কী তৈরি করতে চাই। গুগল স্প্রেডশীটগুলিতে কীভাবে কেউ এটি করতে হয় জানেন?

যদি এটি সহায়তা করে, আমি Google স্প্রেডশিট (ডাটাবেস) এর সাথে যাওয়ার জন্য একটি ফর্ম তৈরি করেছি যা শীটটিতে ডেটা প্রবেশ করবে এবং নিশ্চিত করতে পছন্দ করবে যে কোনও ব্যবহারকারী ইতিমধ্যে তালিকার অন্য কারও মতো নাম প্রবেশ করবে না।


4
ঠিক আছে, এটি বলা দরকার: এক্সেলের মতো গুগল স্প্রেডশিটগুলি কোনও ডাটাবেস ইঞ্জিন নয়। আপনি সঠিকভাবে এটি করতে পারে এমন কোনও ধরণের বাস্তব ডাটাবেস ব্যাকএন্ড বিবেচনা করতে চাইতে পারেন। ডেটাবেস হিসাবে এক্সেল ব্যবহার করা লোকদের সাথে আমাদের 20+ বছরের খুব খারাপ অভিজ্ঞতা রয়েছে এবং সবাইকে YET এর পরেও এই পাঠগুলি শিখতে হবে তা দেখতে আমি ঘৃণা করি। স্প্রেডশিট! = ডাটাবেস। এটি শিখুন, এটি বেঁচে থাকুন, এটি পছন্দ করুন।
মাইকেল কোহেন


2
এক্সেল, পাঠ্য ফাইল এবং বালির লাইনগুলি সঠিকভাবে ব্যবহার করা হলে ডাটাবেস হতে পারে। এটি বলেছিল, গুগল শিটের বিশাল-মাল্টিপ্লেয়ার বৈশিষ্ট্যটির অর্থ এটিতে আরও কয়েকটি ডাটাবেস বৈশিষ্ট্য যুক্ত করা একটি দুর্দান্ত প্রার্থী হবে।
উইলিয়াম এন্টারিকেন

উত্তর:


54
=COUNTIF($A:$A,"="&A1)  < 2

আপনি যদি কলাম এ এর ​​জন্য ডেটা বৈধকরণ নিয়মের কাস্টম সূত্র হিসাবে রেখে দেন, কলাম এ সমস্ত নকলকে প্রত্যাখ্যান করবে।


কোনও স্ক্রিপ্টে না গিয়ে ডুপ্লিকেট হাইলাইট করার এটি একটি দুর্দান্তভাবে সহজ উপায়। তুমি শুধু আমার সকাল বাঁচিয়েছ .. ধন্যবাদ!
ম্যাথু

3
আপনি কি সূত্রটির অর্থ ব্যাখ্যা করতে পারেন? কি A1দাঁড়াবে? A2আমার ডেটা দ্বিতীয় সারিতে শুরু হলে আমি কি এটিকে পরিবর্তন করব?
টোম জ্যাটো - মনিকা

6

আপনি যদি কোনও ফর্ম ব্যবহারের জন্য জোর দিয়ে থাকেন তবে আমার কাছে কোনও সমাধান নেই, তবে অন্যথায় আমার খুব সাধারণ সমাধান রয়েছে: আসুন বলে নেওয়া যাক যে অনন্য কলামটি এ Then : =COUNTIF($A$1:$A$999,A2)<=1। তারপরে, আপনি ঘরটি অনুলিপি করুন এবং পুরো কলামটি নির্বাচন করুন, ডান ক্লিক করুন, পেস্ট বিশেষ সাবমেনু প্রসারিত করুন , এবং কেবলমাত্র পেস্ট ডেটা বৈধকরণ ক্লিক করুন । এটাই!


2

আপনি একটি তালিকা থেকে ডেটা বৈধতার বিপরীতে জিজ্ঞাসা করছেন। কার্যত আপনি যদি চান যে ডাটা তালিকায় মানটি সফলতার পরিবর্তে ব্যর্থ হয়। ডেটা বৈধকরণের মাধ্যমে এটি সম্ভব নয়, তবে একটি স্ক্রিপ্ট এটি করতে পারে।

নিম্নলিখিত স্ক্রিপ্ট বিবেচনা করুন। এই স্ক্রিপ্টটি সমস্ত সম্পাদনা পর্যবেক্ষণ করে এবং যখন কোনও সেল মান একই কলামে অন্য কোনও ঘর মান নকল করে তখন একটি বার্তা বাক্স পপ করে।

function onEdit( event )
{
  // Store the edited sheet.
  var sheet_active = event .source .getActiveSheet() ;

  // Store the edited range.
  var range_active = event .source .getActiveRange() ;

  // Store the row, column, and value of the edited cell.
  var row_edited = range_active .getRow() ;
  var column_edited = range_active .getColumn() ;
  var value_edited = range_active .getValue() ;

  // Store a range consisting of the column containing the edited cell.
  var range_column_edited = sheet_active .getRange(
    1 , column_edited ,
    sheet_active .getMaxRows() , 1
  ) ;

  // Store an array consisting of the values in the column.
  var values_column_edited = range_column_edited .getValues() ;

  // Compare each value to the edited cell.
  for( var r = 0 ; r < values_column_edited .length ; r++ )
  {
    if( r+1 == row_edited ) continue ;
    if( values_column_edited[r] == value_edited )
      Browser .msgBox(
        'value_edited="'
        + value_edited
        + '" values_column_edited['
        + r
        + ']="'
        + values_column_edited[r]
        + '"'
      ) ;
  }
}

বিভিন্ন ব্যবহারিক সংশোধন প্রয়োজন হবে। উদাহরণস্বরূপ, আপনি কেবলমাত্র কয়েকটি নির্দিষ্ট কলামগুলি পর্যবেক্ষণ করতে পারেন এবং ঘরের মানটি ফাঁকা করে দেওয়ার মতো অতিরিক্ত পদক্ষেপ নিতে বেছে নিতে পারেন। ফাঁকা (অনুপস্থিত) মানগুলির জন্য আপনার বিশেষ হ্যান্ডলিংয়ের প্রয়োজন হতে পারে। তবে এটি আপনাকে প্রাথমিক কৌশল দেয় যা আপনাকে বৈধতা দেবে।

হালনাগাদ:

মূল উত্তরের বিস্তারিত জানার জন্য আমি ভেবেছিলাম যে আমি ব্যক্তিগতভাবে ব্যবহার করেছি এমন বৈধতাগুলির কয়েকটি যুক্ত করব যা উত্তরে বর্ণিত ছিল।

// এখানে আমি নিশ্চিত করেছিলাম যে একটি মাত্র ঘর সম্পাদিত হচ্ছে to

function isRangeSingleCell(range) {
  if(range.getRow() === range.getLastRow() && range.getColumn() === range.getLastColumn()) { return true; }
}

এটি ব্যবহার করতে যদি একাধিক ঘর সম্পাদিত হয় তবে বৈধতাটি এড়িয়ে যান

if(!isRangeSingleCell(range_active)) { return; }

সারিটি যদি প্রথম সারিতে না হয় তবে আপনি বৈধতাও এড়িয়ে যেতে পারেন:

if(range_active.getRowIndex() != 1) { return; }

দ্রষ্টব্য: সারি গণনা যদি 0 বা 1 থেকে শুরু হয় তবে আমার কোডের শীর্ষটি মনে করতে পারছি না তাই এই কোডটিতে একটি ত্রুটি থাকতে পারে

অন ​​এডিট বৈধকরণগুলির কীটি যত তাড়াতাড়ি সম্ভব অপ্রয়োজনীয় গণনা থেকে বাঁচানোর জন্য প্রস্থান করা। একটি ফাংশন থেকে দ্রুত প্রস্থান খালি রিটার্ন স্টেটমেন্ট।

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