Função de junção do VBA do Excel

A função VBA JOIN é usada para unir uma matriz de substrings ao delimitador especificado. Assim como a própria palavra significa que ela precisa unir duas ou mais strings. Agora, aqui estão algumas capturas com ele. As strings estão em uma matriz e também usam um delimitador como a função concatenar. Mas o delimitador para a função concatenada pode ser diferente entre quaisquer duas cadeias, porque precisamos fornecer um delimitador entre cada duas cadeias usando a função concatenar. Mas no Join in VBA, precisamos fornecer delimitador apenas uma vez. Esse delimitador é usado para cada sequência de caracteres. Mas este parâmetro também é opcional. Então, o que acontece quando não fornecemos um delimitador para a função? Quando não fornecemos nenhum delimitador para a função, ele ocupa "espaço" como delimitador por padrão.

Sintaxe da função de associação no Excel VBA

A função de associação tem a seguinte sintaxe no Excel VBA:

Agora vamos entender os argumentos para a função Join VBA,

  • Matriz de origem: é uma matriz ou conjunto de strings que queremos unir.
  • Delimitador: Este é o delimitador ou o caractere que usamos para diferenciar entre uma string e outra. Um delimitador pode ser espaço, vírgula, ponto final ou qualquer caractere do nosso computador.

A saída retornada por esta função é uma sequência.

Como usar a função de associação do Excel VBA?

Vamos aprender como usar uma função de junção do VBA com alguns exemplos no Excel.

Você pode fazer o download deste modelo de VBA Join Excel aqui - Modelo de VBA Join Excel

Junção do VBA do Excel - Exemplo # 1

Primeiro, vamos começar com um exemplo básico. Temos o caminho de um arquivo armazenado em diferentes células da nossa planilha na planilha 1. Queremos um caminho total para esse local em outra célula. O caminho que precisa ser unido é o seguinte,

Queremos o caminho na célula E2. Siga as etapas abaixo para usar a função de associação no Excel VBA.

Etapa 1: Vá para a guia do desenvolvedor e clique no Visual Basic para poder acessar o VB Editor.

Etapa 2: Clique na guia Inserir e insira um módulo no projeto VBA.

Etapa 3: Agora vamos declarar nosso primeiro subprocedimento da seguinte forma.

Código:

 Sub Exemplo () End Sub 

Etapa 4: como temos os dados, podemos simplesmente usar o valor da propriedade range para ingressar no caminho da seguinte maneira.

Código:

 Subexemplo () Intervalo ("E2"). Valor = Final Sub 

Etapa 5: Use a função Unir para unir todas as cadeias de caracteres juntamente com o delimitador como "\".

Código:

 Subexemplo () Intervalo ("E2"). Valor = Junção (Matriz (Intervalo ("A2"). Valor, Intervalo ("B2"). Valor, Intervalo ("C2"). Valor, Intervalo ("D2") .Value), "\") End Sub 

Etapa 6: execute o código acima pressionando a tecla F5 ou clicando no botão Play run e teremos nosso resultado na célula E2, como mostrado abaixo.

Podemos ver que todas as quatro cadeias são unidas a um delimitador comum que é "\".

Junção do VBA do Excel - Exemplo # 2

Vamos seguir em frente com um exemplo prático. Eu tenho o nome do aluno, marcas e aprovação ou reprovação em uma folha. Queremos criar uma pasta separada com arquivos que contenham se o aluno passou ou falhou ou foi agraciado. Para isso, emprestaremos alguns dos conceitos do FSO (File System Objects) usando a função join. Bem, os dados parecem um como abaixo.

Siga as etapas abaixo para usar a função de associação no Excel VBA.

Etapa 1: No mesmo módulo, vamos iniciar outro subprocedimento, como a seguir.

Código:

 Sub Exemplo2 () End Sub 

Etapa 2: Declare duas variáveis ​​como FOE e fluxo de texto, que é um método de FOE da seguinte maneira.

Código:

 Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream 

Etapa 3: Agora vamos declarar mais algumas variáveis, uma como intervalo para armazenar as linhas e outra como inteiro para armazenar as colunas, enquanto outra como String para armazenar o valor da string unida e o caminho da Pasta e um para criar os nomes dos arquivos.

Código:

 Dim rw Como Range Dim res Como String Dim col Como Inteiro Dim FolPath Como String Dim Result Como String 

Etapa 4: como temos os dados na planilha 2, vamos ativar a planilha 2 primeiro.

Código:

 Planilhas ("Plan2"). Ative 

Etapa 5: agora vamos contar o número de colunas que temos nos dados da seguinte maneira,

Código:

 col = Intervalo ("A1"). CurrentRegion.Columns.Count 

Etapa 6: Agora, vamos atribuir um caminho ao Folpath usando a função de informação ENVIRON da seguinte maneira.

Código:

 FolPath = Ambiente ("UserProfile") e "\ Desktop \ Result" 

Etapa 7: Agora vamos verificar se a pasta existe ou não e se não existe, vamos criar uma usando o método FSO da seguinte maneira.

Código:

 Se não for FSO.FolderExists (FolPath), então FSO.CreateFolder FolPath 

Etapa 8: Agora, vamos anexar os nomes armazenados usando a função de deslocamento da seguinte maneira.

Código:

 Para cada intervalo de rw no ("A2", intervalo ("A1"). Fim (xlDown)) Resultado = rw.Offset (0, 1) .Value 

Isso abrirá os arquivos com nomes simultaneamente no modo de acréscimo, onde os valores mais recentes serão os últimos a serem acrescentados. Nós usamos o código acima para que o valor do resultado seja atribuído um por um.

Etapa 9: Agora, como a função Join usa a matriz 1-D, usaremos a função application.transpose com a função join para convertê-la em uma matriz 1-D da seguinte maneira.

Código:

 Definir St = FSO.OpenTextFile (FolPath & "\" & Result & ".xls", ForAppending, True) res = Associação (Application.Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab ) St.WriteLine res 

Por que usamos application.transpose? Como na matriz geral (1-D), o intervalo deve ser horizontal, o que significa que uma linha possui muitas colunas. Agora, como temos um intervalo vertical aqui na coluna B, que é o resultado, usamos esse recurso de transposição para convertê-lo em um array 1-D. Usamos o VbTab como um delimitador para que os valores estejam nas próximas células.

Etapa 10: Antes de finalizar o loop for, fechemos o arquivo e finalize o loop for da seguinte maneira.

O código geral se parece com o código abaixo.

Código:

 Sub Example2 () Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream Dim rw Como Range Dim res Como String Dim col Como Número inteiro FolPath Como String Dim Result como planilhas de string ("Sheet2"). Ative col = Range (" A1 "). CurrentRegion.Columns.Count FolPath = Ambiente (" UserProfile ") &" \ Desktop \ Result "Se não for FSO.FolderExists (FolPath) Em seguida, FSO.CreateFolder FolPath para cada rw no intervalo (" A2 ", intervalo (" A1 "). Fim (xlDown)) Resultado = rw.Offset (0, 1). Conjunto de valores St = FSO.OpenTextFile (FolPath &" \ "& Resultado &" .xls ", ForAppending, True) res = Join (Application .Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab) St.WriteLine res St.Close Próximo rw End Sub 

Etapa 11: Agora, vamos executar o código acima pressionando a tecla F5, podemos ver em nossa área de trabalho que uma pasta foi criada com o nome Resultado, como mostrado abaixo.

Passo 12: Abra a pasta, teremos três arquivos como Pass, Fail e Grace.

Se abrirmos qualquer um dos arquivos, digamos que abrimos o arquivo Fail, podemos ver os dados dos alunos que falharam.

Coisas para lembrar

  • É usado para ingressar em uma matriz de cadeias de caracteres com um delimitador comum.
  • A saída retornada por esta função é String.
  • É o oposto da função Split no VBA.
  • Se não fornecermos um delimitador para essa função, ele ocupará "espaço" como delimitador por padrão.
  • A matriz no argumento deve ser uma matriz unidimensional. Caso contrário, podemos usar os métodos convencionais de application.transpose conforme explicado no Exemplo 2.

Artigos recomendados

Este é um guia para a função de associação do VBA. Aqui discutimos como usar a Função de associação no Excel usando o código VBA, juntamente com exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Função Data Excel
  2. Concatenar seqüências de caracteres no Excel
  3. Aplicações da União VBA
  4. Colunas de concatenação do Excel

Categoria: