Estrutura de índice numérico fora de uma estrutura de pastas

2

Sou novo nisso e farei o meu melhor para fazer essa pergunta corretamente. Eu preciso criar uma estrutura de índice numérica fora de uma estrutura de pasta / documento como tal.

Eu tenho esta informação:

C:\Question\General Information1
C:\Question\General Information1\Articles of Inc
C:\Question\General Information1\Articles of Inc\document .pdf
C:\Question\General Information1\Articles of Inc\document 2.pdf
C:\Question\General Information1\Articles of Inc\document 3.jpg
C:\Question\General Information1\Board Minutes
C:\Question\General Information1\Board Minutes\document .pdf

Fora do acima, preciso criar algo assim:

1.1 C:\Question\General Information1
1.1.1 C:\Question\General Information1\Articles of Inc
1.1.1.1 C:\Question\General Information1\Articles of Inc\document .pdf
1.1.1.2 C:\Question\General Information1\Articles of Inc\document 2.pdf
1.1.1.3 C:\Question\General Information1\Articles of Inc\document 3.jpg
1.1.2 C:\Question\General Information1\Board Minutes
1.1.2.1 C:\Question\General Information1\Board Minutes\document .pdf

Tenho milhares de linhas de documentos e pastas e tenho a necessidade de criar um índice numérico.

    
por Kevin K 04.06.2015 / 21:55

1 resposta

1

Suponho que seus nomes de arquivos estejam na coluna A , começando na linha 1. Se não, faça os ajustes apropriados abaixo.

Defina B1 para

=LEN(A1)-LEN(SUBSTITUTE(A1, "\", ""))

e arraste / preencha para cobrir todos os seus dados. SUBSTITUTE(A1, "\", "") substitui todos os caracteres \ no seu texto com nada, então C:\Question\General Information1 se torna C:QuestionGeneral Information1 , que, obviamente, tem dois caracteres a menos. Subtraindo o comprimento dessa string reduzida do nome do arquivo original é um truque para determinar o número de \ caracteres em seus dados.

Defina C1 para

=IF($B1>=(COLUMN()-2), 1, "")

e arraste / preencha para a direita o suficiente para cobrir o número máximo de níveis (ex., número de \ caracteres) que você espera ter em seus dados. Se você não sabe, basta arrastá-lo para Z1 ; Isso permitirá 24 níveis (26−2). Se você precisar de mais do que isso, faça os ajustes apropriados para a próxima seção.

COLUMN() retorna o número da coluna atual ( C é 3, Z é 26, etc.) Portanto, (COLUMN()-2) varia de 1 na coluna C a 24 na coluna Z . Isso gera o índice numérico do primeiro nome de arquivo na lista. (Lembre-se, B1 contém o número de níveis de diretório.) A fórmula é avaliada como 1 nas colunas cujo número de coluna relativo (aquele no intervalo 1-24) é ≤ o número de níveis de diretório, e em branco caso contrário. Assim, as colunas 1 e 2 ( C e D ) recebem 1 e o restante fica em branco:

C       D       E       F   ...
1       1

que eventualmente traduziremos em 1.1 .

Defina C2 para

=IF($B2>(COLUMN()-2), C1, IF($B2=(COLUMN()-2), SUM(C1,1), ""))

e arraste / preencha para a direita o suficiente para cobrir o número máximo de níveis (isto é, para coincidir com a linha 1); e depois arraste / preencha isso para cobrir todos os seus dados (isto é, para corresponder à coluna B ). Isto destina-se a gerar os números dos componentes dos seus números de índice; por exemplo, C2 = D2 = E2 = 1 , F2Z2 estão em branco, para um índice de 1.1.1 . Diz,

  • Se o número do nível for maior que o número da coluna, mantenha o componente de índice da linha anterior. Por exemplo, desde que seus 6º e 7º valores tenham pelo menos três barras invertidas, As colunas C , D e E têm os mesmos valores ( 1 , 1 e 2 ) nas linhas 6 e 7.
  • Se estivermos na coluna correspondente ao número do nível, é aqui que precisamos adicionar um ao componente de índice da linha anterior. Por exemplo, como seus valores 3, 4 e 5 têm quatro barras invertidas, as células F3 , F4 e F5 têm os valores sequenciais 1 , 2 e 3 . (Lembre-se que Coluna F tem um número de coluna relativo de quatro, já que estamos subtraindo 2 .)
    • usei SUM(C1,1) em vez de C1+1 porque SUM(C1,1) será avaliado como 1 se C1 for uma string em branco, Considerando que C1+1 resultará em um erro.
  • Caso contrário, estamos na coluna além do número do nível, portanto, exibir em branco.

Agora, defina AC1 para

=IF(C1="", "", C1&".")

Isso simplesmente diz que, se a célula C1 tiver um componente de índice, acrescente um período (“ . ”), caso contrário, exibir em branco. Arraste / preencha isso para a direita o suficiente para corresponder à coluna C …, data; por exemplo, para AZ1 . Defina AB1 para

=AC1&AD1&AE1&AF1&AG1&AH1&AI1&AJ1

também estendendo-o até onde for necessário. (Sim, isso é tedioso; infelizmente, o Excel não é inteligente o suficiente para que CONCATENATE(AC1:AZ1) funcione. Felizmente, você precisa fazer isso apenas uma vez.) Isso concatena os componentes de índice pontuados das Colunas AC …, dando a você quase o que você quer. O único problema é que uma vez que cada um dos valores não em branco AC - AZ termina com um período, a concatenação será também. Então, defina AA1 para

=LEFT(AB1, LEN(AB1)-1)

Esta é a substring mais à esquerda de AB1 contendo todos menos o último caractere; isto é, remove o período final. Arraste Colunas AA - AZ para baixo para cobrir os dados. Isso deve ser o que você quer:

    
por 05.06.2015 / 08:20