Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Domingsp
Posts
#61071
Olá, nessa planilha gostaria de intercalar caracteres mediante o que é encontrado na coluna B:

Se nas células de B houver 1, o 1 fica sem alteração.
Para todo AB, antes virá um "C".
Para todo 4, antes virão dois "X".
Para todo 5, antes virão três "S".
Para todo WS, antes virão quatro "E".

A ordem dos caracteres de B não é alterada, apenas são intercalados outros caracteres.

Fiz uma macro que não está resolvendo. Não sei como incrementar, passando para as próximas linhas, percorrendo a coluna B.

Escrevi na coluna F como deve ficar, só como explicação, mas o ideal é que o resultado saia na própria coluna B.
Coloquei a execução por meio de um ScrollBar, executando linha por linha, mas se for executado num botão, de uma só vez, é até melhor.
Desde já, obrigado.

INTERCALAMENTO.xlsm
Você não está autorizado a ver ou baixar esse anexo.
#61073
Experimente:
Código: Selecionar todos
Sub InsereCaracteres()
 Dim rngB As Range, str As String
  For Each rngB In Range("B2:B" & Cells(Rows.Count, 2).End(3).Row)
   Select Case rngB.Value
    Case "AB": str = "C"
    Case 4: str = "XX"
    Case 5: str = "SSS"
    Case "WS": str = "EEEE"
   End Select
   If str <> "" Then rngB.Value = str & rngB.Value: str = ""
  Next rngB
End Sub
Domingsp agradeceu por isso
#61074
osvaldomp, Obrigado pela rapidez em reponder :D

Mas se observar a coluna F, que é onde coloquei como deve ficar o resultado desejado, os caracteres iniciais foram deslocados e os caracteres(C, XX, SSS, EEEE...) são inseridos entre eles. Não seria da forma apresentada.
Expliquei mal ao escrever que a "ordem dos caracteres não é alterada". Na verdade, eles precisam ser deslocados para a inserção dos outros.
osvaldomp agradeceu por isso
#61075
Foi vacilo meu. Entendi errado. Peço desculpas. :oops:
Experimente este abaixo no lugar do anterior.
Código: Selecionar todos
Sub InserePreencheCélulas()
 Dim x As Long, k As Long, str As String
  x = 2
  Do While Cells(x, 2) <> ""
   Select Case Cells(x, 2)
    Case "AB": k = 1: str = "C"
    Case 4: k = 2: str = "X"
    Case 5: k = 3: str = "S"
    Case "WS": k = 4: str = "E"
   End Select
   If k > 0 Then
    Cells(x, 2).Resize(k).Insert Shift:=xlDown
    Cells(x, 2).Resize(k) = str
    x = x + k: k = 0
   End If
   x = x + 1
  Loop
End Sub
Domingsp agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord