গুগল স্প্রেডশিটে কলামে রূপান্তর পাঠ্য


32

গুগল স্প্রেডশীটগুলিতে আপনি কীভাবে পাঠ্য-থেকে-কলামগুলিতে রূপান্তর করবেন?

উদাহরণস্বরূপ, আমার একটি ঘরে নিম্নোক্ত ডেটা স্ট্রিং রয়েছে:

5,233,6,2,6,7,2,2,6,6

কমা বিভাজককারীকে কলামে বিভক্ত করতে চাই।

সম্পাদনা: আমি গুগল অ্যাপ্লিকেশন স্ক্রিপ্টিং ব্যবহার না করে এমন একটিতে আমি গৃহীত উত্তরটি পরিবর্তন করেছি কারণ গুগল নিজের ক্ষমতাকে অসম্পূর্ণ করার জন্য জাহান্নাম-বাঁকা বলে মনে হচ্ছে।


আপনি গুগল-অ্যাপস-স্ক্রিপ্ট ট্যাগ যুক্ত করেছেন কেন? উত্তরগুলি ফিট করে?
জ্যাকব জান তুয়িনস্ট্র

1
@ জ্যাকবজানটুইনস্ট্র্রা কারণ গুগল অ্যাপস স্ক্রিপ্টিংয়ের মাধ্যমে এই ক্ষমতাটি যুক্ত করা যেতে পারে। আমি স্ক্রিপ্ট গ্যালারীটিতে পাওয়া যেতে পারে এমন একটি 'টেক্সট টু কলাম' স্ক্রিপ্ট লিখে আমার নিজের সমস্যার সমাধান করেছি। গুগলগুরু এখানে একটি ভিডিও টিউটোরিয়াল পোস্ট করেছে যার ব্যবহারটি এখানে দেখায় googlegooru.com/text-columns-google- স্প্রেডশীট
ইভান প্লেস

কি ইতিমধ্যে Google স্প্রেডশীট দ্বারা উপলব্ধ সমাধান পার্থক্য: SPLIT। যে মান সেট করা হয়? আপনি যে মানগুলি জানেন তা পেস্ট করতে পারেন।
জ্যাকব জান টুইনস্ট্রা

@ জ্যাকবজানটুইনস্ট্রা আপনার প্রথম সমাধানে বি 2 কে বি 3 এ অনুলিপি করার চেষ্টা করুন। ফলাফলের কক্ষগুলিতে কাঁচা ডেটা নয়, ধারাবাহিকতা সূত্র রয়েছে। স্ক্রিপ্ট থেকে আউটপুটযুক্ত কক্ষগুলিতে প্রকৃত কাঁচা ডেটা থাকে যাতে কোনও সমস্যা ছাড়াই এগুলি অনুলিপি / সরানো যায়। এই প্রশ্নের উদ্দেশ্য হ'ল এক্সেলের 'টেক্সট টু কলামে' বৈশিষ্ট্যের সমতুল্য খুঁজে পাওয়া। অবধি, গুগল আনুষ্ঠানিকভাবে সমর্থন যোগ করে স্ক্রিপ্টটি যতটা কাছে আসবে তত কাছাকাছি।
ইভান প্লেস

1
@ রুবিন স্থিতিশীলতার জন্য অনেক কিছু। আমি আগে যাচাই করেছিলাম এবং এই ধারণাটির মধ্যে ছিলাম যে স্ক্রিপ্টিং পুরোপুরি চলে গেছে। দেখা যাচ্ছে, তারা কেবল স্ক্রিপ্ট গ্যালারীটি মেরেছিল। আপনার প্রস্তাবিত উত্তরের সাথে আমি যাচ্ছি কারণ এটি সহজ স্ক্রিপ্টযোগ্য সমাধান। সাহায্য করার জন্য ধন্যবাদ.
ইভান প্লেস

উত্তর:


14

অনুসরণ সূত্র ঠিক তা করবে; পাঠ্য থেকে কলাম:

A1=5,233,6,2,6,7,2,2,6,6
A2=SPLIT(A1;",")

এবং পরবর্তী; পাঠ্য থেকে সারি:

A1=5,233,6,2,6,7,2,2,6,6
A2=TRANSPOSE(SPLIT(A1;","))

আপডেট 03-02-2013
আপনি ফলাফলটি বিভক্ত করে A1মানগুলি আটকে দিলে এটি ওপির উত্তরে ব্যবহৃত কোডের সমস্ত লাইন হিসাবে একই ফলাফল দেবে। আমি এটির পাশাপাশি এটিতে গুগল অ্যাপস স্ক্রিপ্টও দিয়েছিলাম এবং এটি আমি তৈরি করেছি: পাঠ্যে কলামে

function mySplit() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sh.getActiveCell().getValues()[0];
  var sCell = cell[0].split(",");
  var row = sh.getActiveCell().getRowIndex();
  var col = sh.getActiveCell().getColumnIndex();

  sh.getRange(row,col+1,1,sCell.length).setValues([sCell]);  
}

ফলাফলটি বিভক্ত করতে এবং এটিকে শীটটিতে যুক্ত করার জন্য আমি বিল্ট-ইন স্প্লিট ফাংশনটি সহজভাবে ব্যবহার করি, এর চেয়ে বেশি কিছুই এবং কম কিছু না।


চমৎকার ... আপনি ইউআই না বাড়িয়ে এটিকে কীভাবে ডাকবেন। আপনি কি ব্যবহারের প্রদর্শন করে একটি দ্রুত উদাহরণ যোগ করতে পারেন?
ইভান প্লেইস

17

ইউআই বাড়ানোর জন্য গুগল অ্যাপস স্ক্রিপ্টের উত্সাহিত করুন

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

কোডটি এখানে:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({ name:"Text to columns", functionName:"textToColumns" });
  menuEntries.push({ name:"Text to columns (custom separator)", functionName:"textToColumnsCustom" });
  menuEntries.push(null);
  menuEntries.push({ name:"Columns to Text", functionName:"columnsToText" });
  menuEntries.push({ name:"Columns to Text (custom separator)", functionName:"columnsToTextCustom" });
  ss.addMenu("Advanced", menuEntries);
}

function textToColumnsCustom() {
  var separator = Browser.inputBox("Text to column","Enter the the separator",Browser.Buttons.OK);
  textToColumns(separator);
}

function columnsToTextCustom() {
  var separator = Browser.inputBox("Column to text","Enter the the separator",Browser.Buttons.OK);
  columnsToText(separator);
}

// Expands a single cell of CSV formatted text to multiple columns
function textToColumns(separator) {
  var sep = typeof(separator) !== 'undefined' ? separator : ',';
  var ss = SpreadsheetApp.getActiveSheet(); 
  var r = ss.getActiveRange();
  // check that only one column was selected
  var col = r.getColumn(); 
  if(col !== r.getLastColumn()) {
    Browser.msgBox("Error", "Invalid selection, too many columns.", Browser.Buttons.OK);
    return;
  }  
  var firstRow = r.getRow();
  // short cut the one row selection
  if(firstRow === r.getLastRow()) {
    var values = r.getValues().toString().split(sep);
    ss.getRange(firstRow,col+1,1,values.length).setValues(new Array(values));
    return;
  } else {
    var rows = r.getValues();
    var values = [];
    var cols = 0;
    for(var i = 0, len = rows.length; i < len; i++) {
      var rowValues = rows[i].toString().split(sep); 
      var rowValuesLen = rowValues.length;
      if(cols < rowValuesLen) { cols = rowValuesLen; }
      values.push(rowValues);
    }
    // set all values at once (padding required because setValues doesn't accept jagged 2d arrays)
    padRow(values, cols);
    ss.getRange(firstRow,col+1,values.length,cols).setValues(values);
  }
}

// Pads a row with empty values to the specified length
function padRow(array, length) {
  for(var i = 0; i < array.length; i++) {
    var arrLen = array[i].length;
    if(arrLen < length) {
      var padLen = length - arrLen;
      var padding = new Array(padLen);
      array[i].push.apply(array[i], padding);
      for(var j = 0, len = array[i].length; j < len; j++) {
        if(typeof(array[i][j]) === 'undefined') {
          array[i][j] = "";
        }
      }
    }
  }
  return array;
}

function columnsToText(separator) {
  var sep = typeof(separator) !== 'undefined' ? separator : ',';
  var ss = SpreadsheetApp.getActiveSheet(); 
  var r = ss.getActiveRange();
  var col = r.getColumn();  
  var firstRow = r.getRow();
  var rows = r.getValues();
  var values = [];
  for(var i = 0, len = rows.length; i < len; i++) {
    var value = rows[i].join(sep);
    values[i] = [value];
  }
  col -= 1;
  ss.getRange(firstRow,col,values.length,1).setValues(values);
}

স্ক্রিপ্ট সম্পাদক সংরক্ষণ এবং বন্ধ করুন। তারপরে, স্প্রেডশিটটি রিফ্রেশ করুন। এটি লোড হতে এক সেকেন্ড সময় নেবে তবে আপনি টুলবারে 'সহায়তা' এর পরে 'অ্যাডভান্সড' পপআপ নামে একটি মেনু দেখতে পাবেন।

ব্যবহার:

  • বিভাজন করতে মানগুলি সহ ঘর (গুলি) নির্বাচন করুন
  • কলামগুলিতে উন্নতপাঠ্য নির্বাচন করুন

এটাই. আপনি একটি স্বনির্ধারিত ডিলিমিটার ব্যবহার করে ('টেক্সট টু কলামগুলি (কাস্টম)' এর মাধ্যমে একটি বিভাজনও করতে পারেন এবং প্রক্রিয়াটি বিপরীত করতে পারেন ('কলামগুলিতে পাঠ্য' মাধ্যমে)।


আমি সবে স্ক্রিপ্টস গ্যালারী থেকে এটি ইনস্টল করেছি এবং এটি কাজ করছে না। আমি এগুলি সরঞ্জামগুলির → স্ক্রিপ্ট ম্যানেজার → সম্পাদনা বোতামে গিয়ে প্রতিটি ফাংশন সংজ্ঞাটির বন্ধনী বন্ধনীটির পরে একটি আধা-কোলন যুক্ত করে ঠিক করেছি। স্ক্রিপ্ট জন্য ধন্যবাদ।
বব এস্পোঞ্জ

@ বোবেসপঞ্জা মাথা উঁচু করার জন্য ধন্যবাদ। আমি জানি গুগল স্ক্রিপ্টগুলির সাথে একটি বাগ রয়েছে যেখানে আমদানিকৃত স্ক্রিপ্টগুলি থেকে ইভেন্টটি সঠিকভাবে নিবন্ধিত হয় না। এটির সমাধান করতে, কেবলমাত্র অনপেন ট্রিগারটি ম্যানুয়ালি যুক্ত করুন।
ইভান প্লেইস

আমি এটি স্ক্রিপ্ট গ্যালারীটিতে দেখতে পাচ্ছি না। এটি এখনও আছে?
এলেন স্পার্টাস

1
@ এস্পার্টাস দেখে মনে হচ্ছে গুগল তাদের নতুন অ্যাড-অন্সের পক্ষে স্ক্রিপ্ট গ্যালারী থেকে মুক্তি পেয়েছে। উপরের কোডটি কেবল একটি স্ক্রিপ্টে অনুলিপি করুন, বন্ধ করুন, তারপরে নথিটি আবার খুলুন এবং এটির কাজ করা উচিত।
ইভান প্লেস 21

কয়েকটি প্রান্তের কেস রয়েছে যেখানে এটি কাজ করছে না। 1,421,873,190,017,370,000,000,000 1.42E+24 সেই সিএসভি লাইনটি 9 টি কলামে বিভক্ত হওয়া উচিত ছিল, তবে এটি কেবল 1 এ বিভক্ত ছিল
18:

3

আমি বিভক্ত ফাংশনটি ব্যবহার করেছি এবং এটি পুরোপুরি কাজ করেছে, যেহেতু এটি অবিরত সূত্রটিও ব্যবহার করে এবং এটি কলাম A তে পাঠ্য থেকে যথাযথ ব্যবধান সহ বিসিডিই কলামে অনুবাদ করে।

আমার উদাহরণ:

Cell A1= text1, text2, date1, number1
Cell B1= split(A1,",")

বি 1 এ ফলাফল পাঠ্য 1 is সি 1 এ আউটপুটটি টেক্সট 2 হয় ডি 1 এ ফলাফল 1 তারিখ 1 ই 1 এ ফলাফল 1 হয় number

এটি ফর্ম্যাটটির যত্ন নেয়, যেহেতু তারিখটি 1-জুন হিসাবে বানান করা হয়েছিল এবং এটি 01/06 তে অনুবাদ হয়েছিল।

যে সূত্র কোষে ব্যবহৃত বিভক্ত BCDE যেখানে CONTINUE(B1; 1; 2), CONTINUE(B1; 1; 3), CONTINUE(B1; 1; 4)। এই অংশটি সমস্তই স্বয়ংক্রিয়ভাবে তৈরি হয়েছিল।


2
এটি কি কোনও মন্তব্য বা সমাধান?
জ্যাকব জান টুইনস্ট্রা

2

আপনার সিএসভি ডেটা টিএসভিতে রূপান্তর করুন (ট্যাব দ্বারা পৃথক করা মান)।
এটি পরে আটকান।


আমি চেষ্টা করেছি যে নিয়মিত পেস্ট দিয়ে, কাজ হয়নি। ব্রাউজারের "আটকানো এবং ম্যাচ শৈলী" দিয়ে পেস্ট করা কাজ করে (ক্রোম /
ম্যাকোস

1
একটি সাধারণ ctrl + v দিয়ে আমার জন্য পুরোপুরি কাজ করেছেন। এটি সহজ সমাধান হতে পারে বলে মনে হচ্ছে!
দিদিয়ের এল

1

অ্যাপস স্ক্রিপ্টটি ব্যবহার করে ইভানের উত্তরটি আমি সত্যিই পছন্দ করি এবং একটি সামান্য উন্নতি করেছি: নিয়মিত অভিব্যক্তি ডিলিমিটারের মিলের জন্য সমর্থন যোগ করে। ওপেনের মেনুএন্ট্রিগুলিতে আমি যুক্ত করেছি:

menuEntries.push({
  name: "Text to columns (regular expression separator)",
  functionName:"textToColumnsRegExp"
});

এবং রেফারেন্সড ফাংশন যুক্ত করেছে:

function textToColumnsRegExp() {
  var separator = Browser.inputBox(
    "Text to column",
    "Enter the regular expression for the separator ",
    Browser.Buttons.OK);
  if (separator) {
    textToColumns(new RegExp(separator));
  }
}

অন্য কোনও পরিবর্তনের প্রয়োজন হয়নি কারণ ইভান জাভাস্ক্রিপ্টের স্ট্রিং.প্রোটোটাইপ.স্প্লিট ব্যবহার করছে, যা স্ট্রিং বা রেজিএক্সপ্যাক্স বস্তুকে ডিলিমিটার হিসাবে গ্রহণ করে। তাই ইভানকে কুডোস!


0

তদুপরি, SPLIT ফাংশনটি ব্যবহার করার পরে যা পৃথক মান যুক্ত অ্যারে সরবরাহ করবে, আপনি এই অ্যারে থেকে একটি নির্দিষ্ট সারি বা কলাম INDEX ফাংশন দিয়ে আলাদা করতে পারেন:

=index(split(importXML("https://www.google.com/search?q=stackexchange","//div[@id='resultStats']/text()")," "),1,2,1)

উদাহরণস্বরূপ গুগল ক্যোয়ারির জন্য ফলাফলের সংখ্যা পুনরুদ্ধার করতে কার্যকর হতে পারে


0

এখানে একটি মেনু আইটেম উপস্থিত রয়েছে যা এটিকে সাহায্য করতে পারে, এখানে: ডেটা → পাঠ্যটি কলামগুলিতে বিভক্ত করুন ...

  1. একটি ঘরে একক ক্লিক করুন এবং আপনার ডেটা আটকান।

    এটি একাধিক সারিগুলিতে প্রদর্শিত হবে তবে কেবল একটি কলাম।

  2. নতুন জনবহুল কক্ষগুলি হাইলাইট করা ছেড়ে মেনু ডেটা text পাঠ্যে কলামগুলিতে বিভক্ত করুন ...

    যদি অ্যাপ্লিকেশনটি আপনার বিভাজকগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করতে সক্ষম হয়, তবে অভিনন্দন: আপনি হয়ে গেছেন!

    অন্যথায়, আপনি কোন বিভাজকটি বিভক্ত করতে চান তা জিজ্ঞাসা করে একটি সামান্য উইজেট উপস্থিত হবে।

    দ্রষ্টব্য: এই উইজেটটি উইন্ডোটির নীচের অংশে উপস্থিত হতে পারে এটি খুঁজে পাওয়া একটু কঠিন করে তোলে!

  3. কোন ডেটা বিভাজক আপনার ডেটা দ্বারা সীমিত করা হয়েছে তা চয়ন করতে উইজেটটি ব্যবহার করুন: কমা, সেমিকোলন, পিরিয়ড, স্পেস বা কাস্টম।

  4. আপনি যদি ট্যাবগুলিতে বিভক্ত করতে চান:

আপনি পারবেন না!


-1

এবং কলামো টেক্সটের সমতুল্য =JOIN(delim, array)সূত্রটি ব্যবহার করা হবে । উদাহরণস্বরূপ, =JOIN(",", A1:A10)এটি A1 থ্রো এ 10 এর মাধ্যমে মানগুলির স্ট্রিংটি মিলবে।


1
এটি সত্য, তবে ওপি জানিয়েছে যে এটির একটি কক্ষে মান (কমা পৃথকীকরণ) রয়েছে।
জ্যাকব জানু টিনস্ট্রা

দরকারী তথ্য, তবে সম্ভবত আমার অনুমানের বিভাজনের উত্তরগুলির মধ্যে একটি মন্তব্য হিসাবে সবচেয়ে ভাল পোস্ট করা হয়েছে posted যেহেতু এটি আসল প্রশ্নের উত্তর দেয় না।
ডেভিড

-1

গুগল স্প্রেডশিটগুলির নতুন সংস্করণ সহ, গুগল অ্যাপ স্ক্রিপ্টগুলি এখন অবচয় করা হয়েছে

আপনি ব্যবহার করতে পারেন শক্তি সরঞ্জাম এর গুগল অ্যাড-অনের গ্যালারি এবং ব্যবহার স্প্লিট ফাংশন। এটি ভালই কাজ করে.


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