Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
Conversión de nombre de columna de número a Excel

En Excel, los nombres de las columnas son caracteres de la A a la Z, si se necesitan más columnas, continúa con AA, AB ...

Quiero escribir una función que convierta números enteros en esos nombres de columna de Excel.

 0 .... A 25 ... Z 26 ... AA

La solución que se me ocurrió es trabajar hasta AZ , pero quiero que funcione más.

 function indexToXlxsColumn($index, $prefix="") { if($index < 26) { return $prefix.chr($index+65); }else{ return indexToXlxsColumn($index % 26, "A"); } }

¿Cómo adaptar esta función para que funcione para cada índice sin producir código de espagueti ?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Aquí está el problema

 return indexToXlxsColumn($index % 26, "A");

Si establece el prefijo del siguiente piso en A, ¿qué sucede cuando tiene una entrada = 53? El resultado debería ser "BB".

código en papel

 function indexToXlxsColumn($index, $prefix="") { if($index < 26) // 53 isnt less then 26 // second loop , 1 is less then 26 { return $prefix.chr($index+65); // $prefix = A // chr($index+65) = B // return "A"."B" ; }else{ return indexToXlxsColumn($index % 26, "A"); // indexToXlxsColumn(53 % 26, "A") -> (1, "A") } }

---ACTUALIZAR---

Sigue el ask aqui esta la respuesta

 function indexToXlxsColumn($index, $suffix ="") { if($index < 26){ return chr($index+65).$suffix ; } return indexToXlxsColumn(($index - $index%26)/26-1, chr($index%26+65).$suffix ); }
over 4 years ago · Santiago Trujillo Relatório

0

Yo lo haría un poco diferente. Me molestó trabajar con chr(). Entonces, una vez almacené el alfabeto en una cadena y lo iteré hasta que el índice se resolvió con éxito.

máximo "zz"

 <?php function getIn($i) { $str = 'abcdefghijklmnopqrstuvwxyz'; $r = (int) floor($i / 26) ; $c = $i % 26; return ($r) < 1 ? $str[$c] : $str[$r-1] . $str[$c]; } echo getIn(52); // output: "ba"

Actualizar con max "zzz"

 function getIn($i) { $str = 'abcdefghijklmnopqrstuvwxyz'; $r = (int) floor($i / 26); $rr = $r >= 27 ? $r - 27 : null; $c = $i % 26; if ( $rr !== null) { return $str[$c] : $str[$r-1] . $str[$c]; } return ($r) < 1 ? $str[$c] : $str[$r-1] . $str[$c]; } echo getIn(800); // ddu echo getIn(1377); // zzz
over 4 years ago · Santiago Trujillo Relatório

0

Una de las implementaciones:

 function indexToXlxsColumn($index) { $name = ''; while($index > 0) { $mod = ($index - 1) % 26; $name = chr(65 + $mod).$name; $index = (int)(($index - $mod) / 26); } return $name; } // echo indexToXlxsColumn(26); // Z echo indexToXlxsColumn(33); // AG // echo indexToXlxsColumn(800); // ADT
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda