मैं Google शीट में दशमलव-संरेखित संख्याएँ कैसे करूँ


13

Google पत्रक में, मैं अंश भाग में अनुगामी शून्य जोड़े बिना दशमलव संरेखित करना चाहता हूं।

Instead of:  I want:
+------+     +------+
|  56.0|     |  56  |
|  27.0|     |  27  |
|  83.0|     |  83  |
|   2.4|     |   2.4|
|   1.2|     |   1.2|
| 120.0|     | 120  |
+------+     +------+

पहले कॉलम का प्रारूप आसानी से पूरा हो जाता है (उदाहरण के लिए, "0.0" प्रारूप का उपयोग करके या 123 बटन के तहत कस्टम दशमलव बिंदुओं को सेट करना)।

एक्सेल में, मेरा मानना ​​है कि दूसरे कॉलम का प्रारूप "0." प्रारूप का उपयोग करके पूरा किया गया है, लेकिन इस लेखन के रूप में यह Google शीट में काम नहीं करता है।

वैकल्पिक हल

स्थानापन्न पात्रों के साथ अनुगामी बल देना संभव है:

= Substitute( Text( formula ; "0.0" ) ; ".0" ; "  ")
= Substitute( Text( formula ; "0.0" ) ; ".0" ; "__" )

नोट: दो प्रतिस्थापित व्हाट्सएप अक्षर U + 0020 SPACE नहीं बल्कि U + 2002 EN SPACE हैं । ( U + 00A0 NO-BREAK स्पेस भी काम करता है।)

इस वर्कअराउंड के कुछ अवांछनीय दुष्प्रभाव हैं कि यह

  • न केवल डिस्प्ले फॉर्मेट बल्कि सेल की वैल्यू को भी संशोधित करता है
  • सेल में एक मोनोस्पॉन्टेड फॉन्ट के उपयोग की आवश्यकता होती है
  • अनुगामी व्हाट्सएप यूनिकोड के कारण फ़ॉन्ट प्रतिस्थापन का कारण बनता है और सही ढंग से प्रिंट नहीं करता है
  • अनुगामी व्हाट्सएप के रूप में अनुगामी अंडरलाइन वांछनीय नहीं हैं
  • भ्रम बनाए रखता है क्योंकि यह स्पष्ट नहीं है कि EN SPACE का उपयोग किया जा रहा है
  • (संभवतः) उन स्थानों में विफल रहता है जो दशमलव मार्कर के बजाय अवधि विभाजक (हजारों विभाजक) के रूप में अवधि का उपयोग करते हैं

जवाबों:


5

निम्न कस्टम संख्या प्रारूप के साथ, आप Google शीट में दशमलव-संरेखित संख्याओं के लिए सक्षम हैं, यहां तक ​​कि उन फोंट का उपयोग करके भी जो किर्निंग का उपयोग करते हैं।

कस्टम प्रारूप

???.?????

स्क्रीनशॉट

कस्टम संख्या प्रारूप
यहाँ छवि विवरण दर्ज करें

परिणाम
यहाँ छवि विवरण दर्ज करें

उदाहरण

मैंने इस समाधान को एक उदाहरण फ़ाइल में जोड़ा है: दशमलव-संरेखित संख्याएँ


1
समर्थन के लिए "?" जब मैंने मूल रूप से प्रश्न पूछा तो प्रारूप चरित्र अनुपस्थित था। मुझे आश्चर्य है कि यह Google के हाल ही में लेखांकन संख्या प्रारूपों के समर्थन के भाग के रूप में जोड़ा गया था । यह एक उपयोगी समाधान है, जो मैं चाहता हूं उसके बहुत करीब। केवल सीमा यह है कि एक दशमलव बिंदु तब भी प्रकट होता है जब कोई अंश नहीं होता है। एक्सेल में, उस सीमा के आसपास सशर्त स्वरूपण के साथ काम किया जा सकता है। लेकिन नहीं, ऐसा लगता है, शीट्स में। मैं इस जवाब को स्वीकार कर रहा हूं।
मेटाएड

4

दशमलव-संरेखित संख्याओं को प्रदर्शित करने के लिए मैंने आपके लाइव को थोड़ा आसान बनाने के लिए कुछ कोड लिखे।

पहला कोड

केवल एक सीमा में उपयोग किया जा सकता है, क्योंकि यह गतिशील रूप से रेंज में उच्चतम दशमलव स्थान के अनुसार संख्याओं की उपस्थिति को बदलता है। यह आपको CHAR (160) जैसे अनुगामी चरित्र को चुनने की अनुमति देता है:

function RANGETRAIL(range,chr){
  chr = chr || '0'; 
  var aValues = new Array(), aDecimals = new Array();

  var max=0;
  for(i in range) {
    if(range[i] != "") {
      var string = range[i].toString();
      aValues.push([string]);
      var aSplit = string.split("."); 

      if(aSplit.length > 1) {
        aDecimals.push([aSplit[1].length]);
        if(aSplit[1].length > max) {
          max = parseInt(aSplit[1].length);        
        } 
      } else {
        aDecimals.push(["-1"]);
      }
    }
  } 

  for(k in aDecimals) {
    if(parseInt(aDecimals[k]) != parseInt(max)) {
      for(var l=parseInt(aDecimals[k]); l<parseInt(max); l++) {        
        aValues[k][0] += chr;
      }
    }
  }     
  return aValues;
}

दूसरा कोड

का उपयोग कोशिकाओं के लिए किया जाता है। यहां आपको अनुगामी लंबाई निर्धारित करने की आवश्यकता है:

function CELLTRAIL(cell,len,chr){
  // Brad Christie, http://stackoverflow.com/a/5024108/1536038
  chr = chr || '0'; 
  cell = cell.toString();

  if (!len) return cell;

  var p = cell.indexOf('.');
  p = (p!==-1?(cell.length-p-1):-1);

  for (var m = p; m < len; m++) {
    cell += chr;
  }
  return cell;
}

तीसरा कोड

एक "" को छोड़कर, सभी गैर-न्यूमेरिक्स से एक स्ट्रिंग का पट्टा करेगा। तथा ",":

function RTRIM(cell) {   
  return Number(cell.replace(/[^0-9$.,]/g, ''));
}

उदाहरण फ़ाइल

दशमलव-संरेखित संख्याएँ यहाँ छवि विवरण दर्ज करें


विचार

यह उत्तर आपके प्रश्न में वर्णित चिंताओं को दूर नहीं करता है, लेकिन यह उन्हें प्रदर्शित करने में कुछ स्वचालन (गतिशील रूप से) देगा !! सौभाग्य।


यदि आप एक निश्चित चौड़ाई के फ़ॉन्ट का उपयोग नहीं कर रहे हैं, तो यह इंगित करना चाहता हूं कि इससे अजीब संरेखण समस्याएं हो सकती हैं।
मीर

@ आपकी टिप्पणी के लिए धन्यवाद मीर। क्या आपको दिया गया जवाब पसंद आया? हेडिंग के विचारों में मैंने समझाया कि यह ओपी द्वारा दी गई चिंताओं को दूर नहीं करेगा।
जैकब जान टुंस्ट्रा

1
उत्तर वास्तव में वास्तव में उपयोगी था जब मुझे एहसास हुआ कि मुझे एक निश्चित चौड़ाई के फ़ॉन्ट का उपयोग करने की आवश्यकता है। मैं ईमानदार रहूंगा - मैंने सवाल को ध्यान से नहीं पढ़ा ... मैंने इस बात की पुष्टि करने के लिए इस पर गौर किया कि यह मेरे मुद्दे के समान था, फिर सीधे आपके उत्तर पर कूद गया। इसलिए मैंने यह नहीं देखा कि ओपी में फोंट को लेकर चिंताएँ शामिल थीं।
मीर

1

आप कक्षों की श्रेणी पर पुनरावृति करने के लिए Apps स्क्रिप्ट का उपयोग करके सशर्त रूप से प्रारूप सेट कर सकते हैं और सेल के मान (पूर्णांक बनाम गैर-पूर्णांक) के आधार पर विभिन्न कस्टम संख्या प्रारूप लागू कर सकते हैं । कस्टम संख्या स्वरूपों का उपयोग करके, आप अंडरस्कोर वर्ण का उपयोग करके अलग-अलग चौड़ाई के सफेद रिक्त स्थान प्रदर्शित कर सकते हैं, उदाहरण के लिए, _.सफेद स्थान को एक अवधि _0की चौड़ाई सम्मिलित करता है और एक शून्य वर्ण की चौड़ाई को व्हाट्सएप सम्मिलित करता है। संयोग से, अधिकांश फोंट सभी अंक वर्णों के लिए समान चौड़ाई का उपयोग करते हैं, इसलिए 0 वर्ण 1 और 2 और 3 आदि के समान चौड़ाई है।

यह एक उदाहरण है कि स्क्रिप्ट को चलाकर प्रारूप को लागू करने से पहले और बाद में संख्याओं को कैसे प्रदर्शित किया जाता है। एक दोष यह है कि पूर्णांक से गैर-पूर्णांक या इसके विपरीत में सेल के मूल्य में परिवर्तन से प्रारूप को आवश्यकतानुसार दिखाने या छिपाने के लिए पुन: लागू करने की आवश्यकता होगी।

  Raw Numbers  Decimal Aligned
+------------+----------------+
|    1234.777|         1,234.8|
|        5454|         5,454  |
|           7|             7  |
|         0.5|             0.5|
+------------+----------------+

लिपि

function decimalAlign() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var range = sheet.getRange("B2:B5");
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();
  for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {
      var currentCell = range.getCell(i,j);
      var currentValue = currentCell.getValue();
      if (Math.round(currentValue) == currentValue) {
        currentCell.setNumberFormat("#,##0_._0");
      } else {
        currentCell.setNumberFormat("#,##0.0");
      }
    }
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.