গুগল পত্রকগুলি বহু-লাইন কক্ষকে নতুন সারিগুলিতে বিভক্ত করে (+ চারদিকে সারি প্রবেশের সদৃশ)


14

আমি প্রতিটি ব্যবসায়ের মূল কর্মী সহ ব্যবসায়ের ঠিকানা তথ্যের একটি ডাটাবেস সংকলন করছি। এই প্রকল্পের জন্য আমি যে গুগল স্প্রেডশিটটি উত্তরাধিকার সূত্রে পেয়েছি সেগুলিতে একই কক্ষে তালিকাভুক্ত একাধিক কী কর্মী নাম সহ 'কী স্টাফ' (কলাম বি তে) এর জন্য একটি কলাম অন্তর্ভুক্ত রয়েছে (যেমন CHAR (10))। সারি প্রতি একটি ব্যবসা আছে। 'কী স্টাফ' সেলে লাইনের সংখ্যা সারি-সারি পরিবর্তিত হয়। আমার প্রাথমিক শীটটি এমন দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

এই শীটটি অপ্টিমাইজ করার জন্য আমাকে নিম্নলিখিতগুলি করতে হবে:

  1. প্রতিটি মাল্টি-লাইন 'কী স্টাফ' সেল বিভক্ত করুন যাতে প্রতিটি কী কর্মীদের নাম তার নিজস্ব সারিতে প্রদর্শিত হয়। এটির জন্য মূল সারিটির নীচে নতুন সারি / সন্নিবেশ করা প্রয়োজন।
  2. মূল সারিতে থাকা অন্যান্য সমস্ত কক্ষের ডেটা সদৃশ করুন (যেমন কলাম এ এবং সি: ই) থেকে, যাতে প্রতিটি নতুন সারিতে প্রতিটি ব্যবসায়ের পুরো ডেটা থাকে
  3. আমার একটি স্বয়ংক্রিয় প্রক্রিয়া দরকার - প্রক্রিয়াজাত করতে আমার প্রায় 1000 টি ব্যবসায় থাকবে তাই কোনও ম্যানুয়াল পদক্ষেপের সাহায্যে এটি করতে পারবেন না

চাদরটি এর পরে দেখতে হবে:

এখানে চিত্র বর্ণনা লিখুন

=TRANSPOSE(SPLIT(B1,CHAR(10)))স্পষ্টত ব্যবহার করা পথের কিছু অংশ যায় - এটি নতুন সারি সন্নিবেশ করে না এবং আশেপাশের কলামের এন্ট্রিগুলিকে সদৃশ করে না। সমস্ত সাহায্য কৃতজ্ঞভাবে গৃহীত!


উত্তর:


14

প্রথমত, দেরী উত্তরটির জন্য দুঃখিত, তবে আপনার সাথে কাজ করার জন্য আমার কাছে একটি সমাধান রয়েছে।

কোড

function result(range) {
  var output2 = [];
  for(var i=0, iLen=range.length; i<iLen; i++) {
    var s = range[i][1].split("\n");    
    for(var j=0, jLen=s.length; j<jLen; j++) {
      var output1 = []; 
      for(var k=0, kLen=range[0].length; k<kLen; k++) {
        if(k == 1) {
          output1.push(s[j]);
        } else {
          output1.push(range[i][k]);
        }
      }
      output2.push(output1);
    }    
  }
  return output2;
}

ব্যাখ্যা

স্ক্রিপ্ট প্রতিটি সারিটি মূল্যায়ন করে এবং বিশেষত প্রতিটি সারির দ্বিতীয় কলামটি (জাভাস্ক্রিপ্ট অ্যারেতে শূন্য ভিত্তিক, সুতরাং কলাম 2 অ্যারের সূচক 1 এর সাথে মিল রাখে)। এটি সেই ঘরের সামগ্রীগুলি একাধিক মানগুলিতে "\n"বিভক্ত করে এবং ডিলিমিটার (লাইন ফিড) হিসাবে ব্যবহার করে । এর পরে এটি বিদ্যমান তথ্যটিকে একটি অ্যারের সাথে যুক্ত করে এবং কেবল পৃথক ফলাফল যুক্ত করে, যখন এটি সূচক 1 টি হিট k == 1)করে।

স্ক্রিনশট

উপাত্ত
এখানে চিত্র বর্ণনা লিখুন

ফলাফল
এখানে চিত্র বর্ণনা লিখুন

উদাহরণ

আমি আপনার জন্য একটি উদাহরণ ফাইল তৈরি করেছি: মাল্টি-লাইন ঘরগুলি নতুন সারিগুলিতেসরঞ্জামগুলি> স্ক্রিপ্ট সম্পাদকের
অধীনে স্ক্রিপ্ট যুক্ত করুন এবং সেভ বোতামটি টিপুন।


2
আশ্চর্যজনক দুর্দান্ত ভয়ঙ্কর - এই লোকটিকে একটি বিয়ার কিনুন! অনেক ধন্যবাদ জ্যাকব, আমার ঠিক এটিই দরকার।
কির্ক ট্যাব

2
এবং পরিসীমাটি কীভাবে সংজ্ঞায়িত করা যায়? (এই বার্তাটি "
অপরিজ্ঞাত

সত্যিই বড় ফাইলটিতে এটি ব্যর্থ হবে ... ফলাফলটি খুব বড়।
কাইল পেনেল

উজ্জ্বলভাবে উত্তর, মাত্র একটি বাগ। প্রদত্ত পরিসরে প্রথম কলামের DELIMITER থাকা উচিত নয়। অস্থায়ী workaround প্রথম কলাম হিসাবে সিরিয়াল numbes বা স্থির মান থাকতে হবে। চেষ্টা করা হয়নি তবে প্রথম ফাঁকা কলামেও সমস্যাটি সমাধান করা উচিত।
আশিষ সিং

3

পুনরাবৃত্তিযোগ্য সমাধানটির জন্য একটি স্ক্রিপ্ট প্রয়োজন।

তবে এক সময়ের প্রচেষ্টার জন্য আপনি কেবল ব্যবহার করতে পারেন =SPLIT(B3,CHAR(10))। এটি আপনাকে পাশাপাশি সমস্ত সাহায্যকারী কলামগুলিতে পাশাপাশি ব্যক্তির নাম দেবে:

এখানে চিত্র বর্ণনা লিখুন

অনুলিপি / স্পষ্ট-বিশেষ, সহায়ক-কলামের বিষয়বস্তুগুলিকে মূল্য দেয়।

এবং প্রতিটি সহায়ক কলামের জন্য যা ব্যবহার করা হয় (আশা করি খুব বেশি নয়, 'আশা করি আপনার কোনও একটি ব্যবসায় খুব বেশি লোক নেই) বর্তমান ব্লকের শেষে সারিগুলির ব্লকটি ম্যানুয়ালি অনুলিপি করে আটকে দিন। (এটি দুর্দান্ত বর্ণনা নয়, তবে আপনি প্রবাহিত হবেন))


হাই মেরি, ধন্যবাদ তবে আমার স্বতন্ত্র ব্যক্তি প্রয়োজন। ব্যক্তির নামগুলি নতুন ROWS এ ফেলে দেওয়া হয়েছে (অতিরিক্ত সারিগুলি এগুলিকে সংযোজন করতে স্বয়ংক্রিয়ভাবে তৈরি করা হয়েছে), তারপরে আশেপাশের তথ্যগুলি নতুন 'ব্যক্তি' কোষের পাশে অনুলিপি করা হয়েছে। এবং আমার একটি 100% স্বয়ংক্রিয় প্রক্রিয়া প্রয়োজন - আমি হাজার বা ততোধিক ব্যবসায়ের জন্য ম্যানুয়ালি এটি করতে পারি না!
কিরক ট্যাব

পুরো হাজার ব্যবসায়ের জন্য আপনাকে ম্যানুয়াল পদক্ষেপটি করতে হবে না। আপনাকে কেবল সেই ব্যবসাগুলির যে কোনও একটিতে যুক্ত সর্বাধিক সংখ্যক পেপোলের জন্য এটি করতে হবে: উদাহরণস্বরূপ যদি কোনও ব্যবসায়ের ছয় জন থাকে তবে সেখানে ছয়টি নতুন সহায়ক কলাম তৈরি হবে, সুতরাং আপনাকে একটি ম্যানুয়াল অনুলিপি-অনুলিপি করতে হবে ছয় বার, প্রতিটি কলামের জন্য একটি।
MaryC.fromNZ

1
কেউ এর জন্য একটি স্ক্রিপ্ট লিখতে পারে (আমি সে কেউ নই!) - তবে সত্যই এটি পরীক্ষায় ব্যয় করা সময় সম্ভবত এটি নিজে হাতে সময় ব্যয় করার চেয়ে বেশি হবে greater
মেরিসি.ফ্রমএনজেড

2

ভাবেন জন্য যারা অবিলম্বে উপলব্ধি করতে পারে কিভাবে সহায়ক ব্যবহার করতে কাস্টম ফাংশন মধ্যে গৃহীত উত্তর :

  • আপনার একাধিক শীট প্রয়োজন, উদাহরণস্বরূপ দুটি শীট হ'ল DATAএবং RESULTRESULTশীট খালি না হওয়া পর্যন্ত কোয়েরি চালানো হয়েছে। আপনি যে ক্যোয়ারীটি DATAজ্যাকবের স্ক্রিনশটের শিটটি বোঝায় তা দেখতে পাচ্ছেন ।

  • আপনার সম্ভবত k8 নং লাইনে তুলনা মানটি সংশোধন করতে হবে যা কলামটি বোঝায় যেখানে আপনার ডেটা পার্স করতে হবে। একই সংখ্যার 4 নং লাইনে ২ য় অ্যারে মানের মধ্যে যেতে হবে।

  • আপনার বর্তমানে 4 রেখায় ডিলিমিটারটি সংশোধন করার প্রয়োজন হতে পারে \n

এই সমস্ত কিশোরকে কিছুটা সহজ করার জন্য, আমি একই কোডটি নিয়েছি এবং ডানিমিটার এবং লক্ষ্য কলামটি ফাংশনের শীর্ষে সেট করে ভেরিয়েবলগুলিতে বের করেছি । জ্যাকব উল্লেখ করেছেন যে প্রথম সংখ্যা হিসাবে 0 দিয়ে লক্ষ্য কলাম গণনা শুরু হয়

function result(range) {
  delimiter = ", "
  targetColumn = 10

  var output2 = [];
  for(var i=0, iLen=range.length; i<iLen; i++) {
    var s = range[i][targetColumn].split(delimiter);    
    for(var j=0, jLen=s.length; j<jLen; j++) {
      var output1 = []; 
      for(var k=0, kLen=range[0].length; k<kLen; k++) {
        if(k == targetColumn) {
          output1.push(s[j]);
        } else {
          output1.push(range[i][k]);
        }
      }
      output2.push(output1);
    }    
  }
  return output2;
}

তথ্যসূত্র


1
যদি আমি কোডটি চালনা করি তবে এটি বলে: টাইপআররার: সংজ্ঞায়িত থেকে সম্পত্তি "দৈর্ঘ্য" পড়া যায় না। তোমাকে অনেক ধন্যবাদ. উত্তরটি এখানে থাকা উচিত: উত্তর অবশ্যই এখানে কোথাও থাকতে হবে (developers.google.com/apps-script/references/spreadsheet/…) তবে আমার একই ত্রুটি রয়েছে।
ব্যবহারকারী 2060451

@ user2060451 এই উত্তরের সমাধানটি কাস্টম ফাংশনের কোডটি দেখায়, এটি স্ক্রিপ্ট সম্পাদক থেকে চালানোর উদ্দেশ্যে নয়। আমি গুগল থেকে কাস্টম ফাংশন গাইডে একটি লিঙ্ক যুক্ত করেছি।
রুবান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.