🗪 Para mostrar diferentes estilos de texto en la misma celda cuando utilices fórmulas. He formado una fórmula mediante combinaciones de Google Sheets function list. La cual está integrada en Functions with name. Los parámetros son texto, enumeración mayúsculas, minúsculas, número y subrayado.
🎩 𝐓𝐫𝐢𝐜𝐤(𝐬):
Si el resultado es satisfactorio. Puedes copiar y pegar el texto para sustituirlo por la función.
𝒇𝒙=IF(B3;MY_STYLE("ENTREGADO";0;0;0;3);MY_STYLE("pendiente";10;10;10;0))
𝒇𝒙=IF(B3;”🇵🇪🇳🇩🇮🇪🇳🇹🇪”;”𝐄͇𝐍͇𝐓͇𝐑͇𝐄͇𝐆͇𝐀͇𝐃͇𝐎͇”)
la función CHOOSE() al contener opciones. Es complicado saber a qué índice pertenece visualmente. Utiliza las {..} Braces para saber a qué índice pertenece. Si el primer valor de la matriz es numérico al sumar no tiene en cuenta los demás valores de dicha matriz. También puede utilizar la función IFERROR() para establecer un valor por defecto.
𝒇𝒙=IFERROR(CHOOSE(índice;
{value;1};{value;2};{value;3};{value;4};{value;5};{value;6};{value;7};{value;8};{value;9};{value;10};{value;11};{value;12};{value;13};{value;14};{value;15};{value;16};{value;17};{value;18};{value19};{value;20};{value;21};{value;22});
{value;2;"default"}))+0
y si el primer valor de la matriz es texto. Utiliza la función INDEX().
𝒇𝒙=INDEX( IFERROR( CHOOSE( índice;
{value;1};{value;2};{value;3};{value;4};{value;5};{value;6};{value;7};{value;8};{value;9};{value;10};{value;11};{value;12};{value;13};{value;14};{value;15};{value;16};{value;17};{value;18};{value19};{value;20};{value;21};{value;22});
{value;2;"default"}));1)
💭 𝐑𝐞𝐦𝐞𝐧𝐛𝐞𝐫:
Los signos se mantienen los originales. Si no encuentra estilo. Por defecto muestra estilo 2【 Mathematical Bold 】
Esta fórmula está creada para cambiar estilos interactuando con otras fórmulas. Si solo introduces texto sin fórmulas utiliza las opciones nativas de Doc y copia y pega en la hoja de cálculo
🔬 𝐈𝐧𝐯𝐞𝐬𝐭𝐢𝐠𝐚:
¿ Y si utilizamos los símbolos únicos del bloque braille ?
𝒇𝒙=LET(getText;"DEMOSTRACION #1234 de alternar estilos";
getLen;LEN(getText);
IF(getLen=0;"";LET(
arrUnicodeBraille;{0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;32;0;0;10300;0;0;0;0;0;0;0;0;0;0;0;0;10266;10241;10243;10249;10265;10257;10251;10267;10259;10250;0;0;0;0;0;0;0;10241;10243;10249;10265;10257;10251;10267;10259;10250;10266;10245;10247;10253;10269;10261;10255;10271;10263;10254;10270;10277;10279;10298;10285;10301;10293;0;0;0;0;0;0;10241;10243;10249;10265;10257;10251;10267;10259;10250;10266;10245;10247;10253;10269;10261;10255;10271;10263;10254;10270;10277;10279;10298;10285;10301;10293};
arrByEachUnicodeText;MAKEARRAY(getLen;1;LAMBDA(indexRow;indexColumn;UNICODE(MID(getText;indexRow;1))));
arrByEachCharBraille;IFERROR(MAP(arrByEachUnicodetext;LAMBDA(getUnicode;UNICHAR(INDEX(arrUnicodeBraille;getUnicode))));UNICHAR(10060));
CONCATENATE(arrByEachCharBraille))))
⠙⠑⠍⠕⠎⠞⠗⠁⠉⠊⠕⠝ ⠼⠁⠃⠉⠙ ⠙⠑ ⠁⠇⠞⠑⠗⠝⠁⠗ ⠑⠎⠞⠊⠇⠕⠎
⚠️ 𝐖𝐚𝐫𝐧𝐢𝐧𝐠(𝐬):
Si en vez de visualizar las letras o números se muestra un rectángulo 【 ▯ 】Significa un error inesperado.
👓 𝐒𝐚𝐦𝐩𝐥𝐞:
𝓓̠𝓔̠𝓜̠𝓞̠𝓢̠𝓣̠𝓡̠𝓐̠𝓒̠𝓘̠𝓞̠𝓝̠ ⓪①②③④ 𝕕̠𝕖̠ 𝕖̠𝕤̠𝕥̠𝕚̠𝕝̠𝕠̠𝕤̠
𝐃𝐄𝐌𝐎𝐒𝐓𝐑𝐀𝐂𝐈𝐎́𝐍 𝟎𝟏𝟐𝟑𝟒 𝐝𝐞 𝐞𝐬𝐭𝐢𝐥𝐨𝐬
DEMOSTRACION 01234 de estilos
𝐷𝐸𝑀𝑂𝑆𝑇𝑅𝐴𝐶𝐼𝑂́𝑁 𝟢𝟣𝟤𝟥𝟦 𝑑𝑒 𝑒𝑠𝑡𝑖𝑙𝑜𝑠
𝑫𝑬𝑴𝑶𝑺𝑻𝑹𝑨𝑪𝑰𝑶́𝑵 𝟎𝟏𝟐𝟑𝟒 𝒅𝒆 𝒆𝒔𝒕𝒊𝒍𝒐𝒔
𝒟𝓔𝒪𝒮𝒯ℛ𝒜𝒞𝓘𝒪𝒩 𝟢𝟣𝟤𝟥𝟦 𝒹𝓮 𝓮𝓈𝓉𝒾𝓁𝓸𝓈
𝓓𝓔𝓜𝓞𝓢𝓣𝓡𝓐𝓒𝓘𝓞𝓝 𝟎𝟏𝟐𝟑𝟒 𝓭𝓮 𝓮𝓼𝓽𝓲𝓵𝓸𝓼
𝔻𝔼𝕄𝕆𝕊𝕋ℝ𝔸ℂ𝕀𝕆́ℕ 𝟘𝟙𝟚𝟛𝟜 𝕕𝕖 𝕖𝕤𝕥𝕚𝕝𝕠𝕤
𝖣𝖤𝖬𝖮𝖲𝖳𝖱𝖠𝖢𝖨𝖮́𝖭 𝟢𝟣𝟤𝟥𝟦 𝚍𝚎 𝚎𝚜𝚝𝚒𝚕𝚘𝚜
𝗗𝗘𝗠𝗢𝗦𝗧𝗥𝗔𝗖𝗜𝗢́𝗡 𝟎𝟏𝟐𝟑𝟒 𝗱𝗲 𝗲𝘀𝘁𝗶𝗹𝗼𝘀
🇩🇪🇲🇴🇸🇹🇷🇦🇨🇮🇴🇳 𝟢𝟣𝟤𝟥𝟦 🇩🇪 🇪🇸🇹🇮🇱🇴🇸
🄳🄴🄼🄾🅂🅃🅁🄰🄲🄸🄾🄽 ⵙ➀➁➂➃ 🄳🄴 🄴🅂🅃🄸🄻🄾🅂
🅳🅴🅼🅾🆂🆃🆁🅰🅲🅸🅾🅽 ⵙ➀➁➂➃ 🅳🅴 🅴🆂🆃🅸🅻🅾🆂
ⒹⒺⓂⓄⓈⓉⓇⒶⒸⒾⓄⓃ ⓪①②③④ ⓓⓔ ⓔⓢⓣⓘⓛⓞⓢ
🅓🅔🅜🅞🅢🅣🅡🅐🅒🅘🅞🅝 ⓿❶❷❸❹ 🅓🅔 🅔🅢🅣🅘🅛🅞🅢
𝔇𝔈𝔐𝔒𝔖𝔗ℜ𝔄ℭℑ𝔒́𝔑 𝟎𝟏𝟐𝟑𝟒 𝔡𝔢 𝔢𝔰𝔱𝔦𝔩𝔬𝔰
𝕯𝕰𝕸𝕺𝕾𝕿𝕽𝕬𝕮𝕴𝕺́𝕹 𝟎𝟏𝟐𝟑𝟒 𝖉𝖊 𝖊𝖘𝖙𝖎𝖑𝖔𝖘
🇩🇪🇲🇴🇸🇹🇷🇦🇨🇮🇴🇳 ₀₁₂₃₄ 🇩🇪 🇪🇸🇹🇮🇱🇴🇸
𝗗𝗘𝗠𝗢𝗦𝗧𝗥𝗔𝗖𝗜𝗢𝗡 ⁰¹²³⁴ 𝗱𝗲 𝗲𝘀𝘁𝗶𝗹𝗼𝘀
DEMOSTRACION 🀆🀙🀚🀛🀜 de estilo
💡𝐏𝐫𝐨𝐩𝐨𝐬𝐚𝐥(𝐬):
𝒇𝒙=LET(getTextOriginal;$E$1; getEnumUpper;$A2; getEnumLower;$B2; getEumNumber;$C2; getEnumMarked;$D2;
rem_0;"Can choose enumStyle alternatively 1 to 19.
Demo: 6;7;13;0[𝓓𝓔𝓜𝓞𝓢𝓣𝓡𝓐𝓒𝓘𝓞𝓝 ①②③④ 𝕕𝕖 𝕒𝕝𝕥𝕖𝕣𝕟𝕒𝕣 𝕖𝕤𝕥𝕚𝕝𝕠𝕤]";
rem_1;"Off style set default = 1";
enumUpper; IF(ISBETWEEN(getEnumUpper;1;19);getEnumUpper;1);
enumLower; IF(ISBETWEEN(getEnumLower;1;19);getEnumLower;1);
enumNumber;IF(ISBETWEEN(getEumNumber;1;20);getEumNumber;1);
enumMarked;IF(ISBETWEEN(getEnumMarked;1;19);getEnumMarked;0);
getLen;LEN(getTextOriginal);IF(getLen=0;"";
LET(rem_2;"Create charter array from text.";
getSplitByEach;MAP(SEQUENCE(getLen);LAMBDA(getCharOriginal;
LET(rem_3;"get Unicode of each charter.";
getUnicode;UNICODE(MID(getTextOriginal;getCharOriginal;1));
rem_3_1;"Exclude more signs Unicode from the formula and exit.";
IF(OR(ISBETWEEN(getUnicode;1;47);ISBETWEEN(getUnicode;58;64);
ISBETWEEN(getUnicode;91;96);getUnicode>253);
UNICHAR(getUnicode);LET(
rem_4;"Array of unicode letter without accents.";
arrUnicodeLetterNotAccentuated;
{ 65; 65; 65; 65; 65; 65;198; 67; 69; 69; 69; 69; 73; 73; 73; 73; 68; 78; 79; 79; 79; 79; 79;215;216; 85; 85; 85; 85; 89;222;223; 97; 97; 97; 97; 97; 97;230; 99;101;101;101;101;105;105;105;105;111;110;111;111;111;111;111;247;248;117;117;117;117;121;{"default";getUnicode}};
rem_4_1;"Array de unicode with accent.";
arrUnicodeAccent;
{768;769;785;771;776;778; 0;807;768;769;785;776;768;769;785;776;8203;771;768;769;732;785;776; 0; 0;768;769;785;776;769;48; 0;768;769;785;771;776;778; 0;807;768;769;785;776;768;769;785;776;829;771;768;769;785;771;776; 0; 0;768;769;785;776;769;{"default";0}};
getIndexArr;IF(getUnicode-191<1;ROWS(arrUnicodeLetterNotAccentuated);getUnicode-191);
rem_5;"replace unicode without accent.";
getUnicodeOriginal;INDEX(arrUnicodeLetterNotAccentuated;getIndexArr);
rem_6;"Get unicode symbol accent.";
getUnicodeLetterAccentuated;INDEX(arrUnicodeAccent;getIndexArr);
LET(rem_7;"Position unicode default.";
getPositionUnicodeUpper;65;getPositionUnicodeLower;97;getPositionUnicodeNumber;48;
rem_8;"Blocks unicode copy.";
rem_9;"enumStyle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19";
arrCodeNumber_S;{120782;65296;120802;120782;120802;120782;120792;120802;120782;120802;10111; 10111; 9311; 10101;120782;120782; 8320; 8304;127000; 9460};
arrCodeNumber_E;{120791;65305;120811;120791;120811;120791;120801;120811;120791;120811;10120; 10120; 9320; 10110;120791;120782; 8329; 8313;127009; 9470};
arrCodeUpper_S; {119808;65313;119860;119912;119964;120016;120120;120224;120276;127462;127280;127344; 9398;127312;120068;120172;127462;120276; 65313};
arrCodeUpper_E; {119833;65338;119885;119937;119989;120041;120145;120249;120301;127487;127305;127369; 9423;127337;120093;120197;127487;120301; 65338};
arrCodeLower_S; {119834;65345;119886;119938;119990;120042;120146;120458;120302;127462;127280;127344; 9424;127312;120094;120198;127462;120302; 65345};
arrCodeLower_E; {119859;65370;119911;119963;120015;120067;120171;120483;120327;127487;127305;127369; 9449;127337;120119;120223;120327;120327; 65370};
rem_10;"Unicode copy position style. Index select.";
getPositionUnicodeCopyUpper; INDEX(arrCodeUpper_S;enumUpper) - getPositionUnicodeUpper;
getPositionUnicodeCopyLower; INDEX(arrCodeLower_S;enumLower) - getPositionUnicodeLower;
getPositionUnicodeCopyNumber;INDEX(arrCodeNumber_S;enumNumber)- getPositionUnicodeNumber;
rem_11;"Select unicode copy uppercase and lowercase or not pattern cero.";
getUnicodeCopyPositionLetter;IFS(ISBETWEEN(getUnicodeOriginal;getPositionUnicodeUpper;90);getPositionUnicodeCopyUpper;
ISBETWEEN(getUnicodeOriginal;getPositionUnicodeLower;122);getPositionUnicodeCopyLower;
TRUE();0);
rem_12;"Select unicode copy number or no pattern cero.";
getUnicodeCopyPositionNumber;IFS(ISBETWEEN(getUnicodeOriginal;getPositionUnicodeNumber;57);getPositionUnicodeCopyNumber;TRUE();0);
rem_13;"Select unicode copy marked. {unicode;onyl info index choose}";
getUnicodeMarked;IFERROR(CHOOSE(
enumMarked; {800;1};{810;2};{839;3};{860;4};{773;5};{838;6};{831;6};{865;7};{822;8};{8330;9};{864;10});{0;"default"});
rem_14;"set pattern unicode copy";
getUnicodeCopy;SUM(getUnicodeOriginal;getUnicodeCopyPositionLetter;getUnicodeCopyPositionNumber);
rem_15;"array unicode Substitution. Random pattern.";
getUnicodeReplace;
{9311;8305;8306;8307;9460;10121;119893;119965;119968;119969;119971;119972;119981;119994;119996;120004;120122;120127;120133;120135;120136;120137;120145;120070;120075;120076;120085;120093;10111;10101;127000};
getUnicodeWith;
{9450;185 ;178 ; 179;9450; 9471;119997;120017;120020;120021;120023;120024; 8475;120046; 8458;120056; 8450; 8461; 8469; 8473; 8474; 8477; 8484; 8493; 8460; 8465; 8476; 8488;11609; 9471;126982};
rem_16;"Search index array replace. Is not pattern.";
getUnicodeSubstitution;IFNA(INDEX(getUnicodeWith;
MATCH(getUnicodeCopy;getUnicodeReplace;0));
getUnicodeCopy);
rem_17;"Array styles not marked.";
arrExcludeStyleMarkedNumber;{0;2;0;0;0;0;0;0;0; 0;11;12;13;14; 0; 0;17;18;19;20};
arrExcludeStyleMarkedUpper; {0;2;0;0;5;0;0;0;0;10;11;12;13;14; 0; 0;17;18; 2};
arrExcludeStyleMarkedLower; {0;2;0;0;0;0;0;0;0; 0; 0;12;13; 0; 0; 0;17;18; 2};
rem_18;"Get a unicode copy. Exclude marked.";
isMarked;IF(OR(
IFERROR(ISBETWEEN(getUnicodeCopy;INDEX(arrCodeNumber_S;INDEX(arrExcludeStyleMarkedNumber;enumNumber));
INDEX(arrCodeNumber_E;INDEX(arrExcludeStyleMarkedNumber;enumNumber)));FALSE());
IFERROR(ISBETWEEN(getUnicodeCopy;INDEX(arrCodeUpper_S;INDEX(arrExcludeStyleMarkedUpper;enumUpper));
INDEX(arrCodeUpper_E;INDEX(arrExcludeStyleMarkedUpper;enumUpper)));FALSE());
IFERROR(ISBETWEEN(getUnicodeCopy;INDEX(arrCodeLower_S;INDEX(arrExcludeStyleMarkedLower;enumLower));
INDEX(arrCodeLower_E;INDEX(arrExcludeStyleMarkedLower;enumLower)));FALSE()));
FALSE();TRUE());
rem_19;"Set letter and marked and accent concatenate.";
CONCATENATE(UNICHAR(getUnicodeSubstitution);
IF(AND(isMarked;getUnicodeMarked>0);UNICHAR(getUnicodeMarked);"");
IF(AND(isMarked;getUnicodeLetterAccentuated>0;
NOT(ISBETWEEN(getUnicodeSubstitution;INDEX(arrCodeUpper_S;6);INDEX(arrCodeUpper_E;6))));
UNICHAR(getUnicodeLetterAccentuated);""))
))))));rem_20;"Array text convert to string.";
CONCATENATE(getSplitByEach))))
📝 𝐏𝐫𝐨𝐩𝐨𝐬𝐚𝐥(𝐬) 𝐝𝐞𝐭𝐚𝐢𝐥(𝐬):
⒈ Función LET() utilizada para asignar nombres descriptivos y tener una mayor claridad de cada proceso. Si procede modificar en un futuro será más fácil la integración. La asignación【 rem_número 】Únicamente su propósito es insertar comentarios. Asignación de nombres en 【 rem_1;"Off style set default = 1" 】comprueba que los parámetros se encuentran entre dos números. En caso contrario establece un estilo como predeterminado funciones IF() y ISBETWEEN().
⒉ Función SEQUENCE() crea una matriz de número secuenciales de la longitud del texto asignado por LEN().
La matriz creada mediante MAP(). Función LAMBDA() recorre cada valor para manipular con una asignación de nombre.
⒊ Función MID() recorre cada carácter de la frase.UNICODE() convierte el carácter en una tabla de códigos únicos.
⒋ 【 rem_3_1;"Exclude more signs Unicode from the formula and exit."; 】Excluye los signos y no continúan con la fórmula retorna el carácter, IF(), ISBETWEEN() y UNICHAR(). Para continuar con la fórmula manteniendo los nombres asignados procedemos a implementar otro LET()
⒌ 【 rem_4;"Array of unicode letter without accents." 】dos matrices para sustituir letras acentuadas por no acentuadas y símbolos diacríticos para combinar después. Mediante IF(), OR() y ISBETWEEN(). a su ver memorizamos el signo diacrítico para combinar después INDEX() 【 getUnicodeLetterAccentuated 】
⒍ Asignaciones 【 rem_8;"Blocks unicode copy." 】seis matrices con inicio y final de cada estilo. Números, mayúsculas y minúsculas.
⒎ Asignaciones 【 rem_10;"Unicode copy position style. Index select." 】 para posicionarnos en cada estilo elegido en los parámetros INDEX() y después asignar mediante un patron
⒏ 【 rem_15;"array unicode Substitution. Random pattern." 】Creamos dos matrices eemplazar 【 getUnicodeReplace 】y por 【 getUnicodeWith 】. A los códigos únicos que no siguen un patrón y encontrar el índice de la matriz MATCH(). Obteniendo el valor con INDEX(). Si la búsqueda no es exitosa se produce un error controlado por IFNA() para retornar el mismo valor y no sustituir.
⒐ 【 rem_17;"Array styles not marked. 】matrices para excluir los estilos que no soportan el marcado y excluirlos mediante IF(), OR() y ISBETWEEN() y la busque de la matriz por INDEX().
⒑ 【 rem_19;"Set letter and marked and accent concatenate." 】concatenamos carácter con subrayado y diacrítico si procede. Función UNICHAR() convertimos el código único en su correspondiente carácter, concatenado si 【 isMarked 】es verdadero con los símbolos de marcado excepto los signos. Finalmente con CONCATENATE() transformamos la matriz en una cadena.
📷 𝐑𝐞𝐬𝐮𝐥𝐭(𝐬):
📺 𝐃𝐞𝐦𝐨𝐧𝐬𝐭𝐫𝐚𝐭𝐢𝐨𝐧(𝐬):
📥𝐅𝐮𝐧𝐜𝐭𝐢𝐨𝐧𝐬 𝐰𝐢𝐭𝐡 𝐧𝐚𝐦𝐞:
⎲ 🖮 Copiar enlace » 🖰 Ir a barra de menús » Datos » Σ Funciones con nombre
⎳ ◨ Barra lateral »🗦🖰 🟩Importar función » 🔍» 🖮 Pegar enlace
💾 𝐆𝐨𝐨𝐠𝐥𝐞 𝐒𝐩𝐫𝐞𝐚𝐝𝐬𝐡𝐞𝐞𝐭(𝐬):
💽 𝐆𝐨𝐨𝐠𝐥𝐞 𝐃𝐨𝐜(𝐬):
🌍 𝐆𝐨𝐨𝐠𝐥𝐞 𝐒𝐢𝐭𝐞(𝐬):
🎥 𝐘𝐨𝐮𝐓𝐮𝐛𝐞 𝐕𝐢𝐝𝐬(𝐬)
📚 𝐑𝐞𝐟𝐞𝐫𝐞𝐧𝐜𝐞(𝐬):