Ir ao conteúdo
  • Cadastre-se

Diegodcr

Membro Pleno
  • Posts

    91
  • Cadastrado em

  • Última visita

  1. @Patropi No caso, teria que procurar na coluna A onde tem o cod quando for "1" ou qualquer outro número como "2", "3", "4" e validar todas as linhas na coluna B e C que pertence ao código que esta procurando. Por ex: cod 1 está na A10 e A20 então tem que validar na B10, B20, C10 e C20 se só tem ZD, ZN e vazio para serem 0% e caso tenha algo além de ZD, ZN e vazio na B10, B20, C10 e C20 a D10 e C20 recebe 100%. A validação é vertical tanto na coluna A quanto na B e C.
  2. Certo, vou exemplificar. Temos as linhas A2:A4 com valor "1". Nas linhas B2:B4 temos valor ZD e ZS. Nas linhas C2:C4 temos valor ZN e vazio logo nas linhas D2:D4 o resultado é "100%" pois se tiver qualquer valor diferente de ZD e ZN nas linhas B2:B4 e C2:C4, D2:D4 recebe "100%". Temos as linhas A7:A8 com valor "3". Nas linhas B7:B8 temos ZD e ZN. Nas linhas C7:C8 temos valor ZD e vazio logo nas linhas D7:D8 o resultado é "0%" pois se tiver somente valor de ZD e ZN nas linhas B7:B8 e C7:C8, D7:D8 recebe "0%".
  3. Boa tarde professores! Preciso que os valores iguais da coluna A, sejam verificados na coluna B e coluna C. A validação é a seguinte: Se a coluna B ou a coluna C receber somente ZD, ZN ou vazio, a coluna D receba 0%; Se a coluna B ou a coluna C receber ZD, ZN, vazio, ou outro valor, a coluna D receba 100%; Em anexo tem a planilha exemplificando. verificação.xlsx
  4. Alguém conhece algum produto que tenho failover, Wi-Fi de 5 GHz, wan e lan giga, bandwidth, controle de site, voucher e vlan? O tenda w18e e w30e tem tudo exceto vlan. O cenário é: Entrar 1 link e sair 3 faixa de ip interna (lan) sem se comunicarem com bandwidth na lan ou faixa de ip.
  5. Tenho a query que precisa retornar a soma do saldo independente da quantidade de itens. Se eu retiro o item da query, retorna tudo em 1 linha porém multiplica o resultado pela quantidade de item. SELECT SC6010.C6_NUM, SC6010.C6_ITEM, SB8010.B8_PRODUTO, SUM(SB8010.B8_SALDO) AS SALDO FROM SB8010, SC6010 WHERE SC6010.C6_PRODUTO = SB8010.B8_PRODUTO AND SC6010.C6_LOTECTL = SB8010.B8_LOTECTL AND SB8010.B8_LOTECTL='9305' group by SC6010.C6_NUM, SC6010.C6_ITEM, SB8010.B8_PRODUTO order by SC6010.C6_NUM, SC6010.C6_ITEM O resultado deveria ser: 00043 440.32 00446 25.6 00446 440
  6. @Edson Luiz Branco Na verdade eu tive que tratar de forma diferente, célula por célula pois o código que você citou acima, não funcionava. Option Explicit Sub test() Dim fullName As String fullName = "c:\users\domenic\desktop\sample.txt" Dim columnCount As Long columnCount = GetColumnCountFromTextFile(fullName, vbTab) If columnCount = 0 Then MsgBox "No data found!", vbExclamation Exit Sub End If Workbooks.OpenText _ Filename:=fullName, _ DataType:=xlDelimited, _ Tab:=True, _ FieldInfo:=GetFieldInfo(columnCount) End Sub Private Function GetColumnCountFromTextFile(ByVal PathAndFilename As String, Optional ByVal Delim As String = ",") As Long ' Returns the number of columns contains in a text file ' First non-blank line used to determine number of columns based on delimiter Dim textLine As String Dim fileNumber As Long Dim columnCount As Long columnCount = 0 fileNumber = FreeFile() Open PathAndFilename For Input As #fileNumber Do Until EOF(fileNumber) Line Input #fileNumber, textLine If Len(textLine) > 0 Then columnCount = UBound(Split(textLine, Delim)) + 1 Exit Do End If Loop Close #fileNumber GetColumnCountFromTextFile = columnCount End Function Private Function GetFieldInfo(ByVal columnCount As Long) As Variant ' Returns a two-dimensional array containing a column number and data type pair ' Sets all columns to text format ReDim fieldInfoArray(1 To columnCount, 1 To 2) Dim i As Long For i = LBound(fieldInfoArray, 1) To UBound(fieldInfoArray, 1) fieldInfoArray(i, 1) = i fieldInfoArray(i, 2) = xlTextFormat Next i GetFieldInfo = fieldInfoArray() End Function
  7. @Edson Luiz Branco Assim deu certo. Agora preciso de um vba pra importar todos os txt e salvar cada um em csv. Eu tenho o código porém ainda ta salvando como data Sub AbrirTXTeSalvarComoCSV() Dim sourceFolder As String Dim targetFolder As String Dim fileName As String Dim fileExtension As String Dim sourceFile As String Dim targetFile As String sourceFolder = "C:\txt\" targetFolder = "C:\csv\" fileName = Dir(sourceFolder & "*.txt") Do While fileName <> "" ' Obtém o nome do arquivo sem a extensão fileExtension = Right(fileName, Len(fileName) - InStrRev(fileName, ".")) fileName = Left(fileName, Len(fileName) - Len(fileExtension) - 1) sourceFile = sourceFolder & fileName & "." & fileExtension targetFile = targetFolder & fileName & ".csv" Workbooks.OpenText Filename:=sourceFile, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _ TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(5, 2)), _ TrailingMinusNumbers:=True ActiveWorkbook.SaveAs Filename:=targetFile, FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close SaveChanges:=False fileName = Dir Loop End Sub
  8. @Rodrigo J Polette A questão que são 2590 txt então a melhor tratativa tem que ser no excel
  9. Estou importando txt para salvar em csv porém quando tem algo digitado como por exemplo: 01/2 O excel formata automaticamente a célula para 01/02/2023. Isso acontece só de abrir o txt no excel. Há alguma forma de importa/abrir txt no excel sem que ele complete para data?
  10. @OreiaG Sim mas aparece só o primeiro resultado e são vários... No post eu citei que na planilha fica melhor explicado
  11. @OreiaG Funcionou e agora preciso que leia todos os .csv que tem em c:\csv e cole o resultado de cada csv numa unica planilha. Cheguei a este VBA mas não sei como levar pra outra planilha. Este codigo so faz no csv Sub Atualizar() base End Sub Private Function base() Dim Caminho, pastaDeTrabalho, pastaDeTrabalhoAtiva, formulas, linhas As String Dim linhaDeInicio As Long Dim arquivos() As Variant pastaDeTrabalhoAtiva = ActiveWorkbook.Name Caminho = "C:\csv\" arquivos = listfiles(Caminho) linhaDeInicio = 1 'verificação de arquivos For Each arquivo In arquivos 'executa somente se para extensão .csv If InStr(1, arquivo, ".csv") <> 0 And _ InStr(1, arquivo, "xlsm") = 0 Then pastaDeTrabalho = Caminho & "\" & arquivo 'abre pasta de trabalho Application.ScreenUpdating = False Workbooks.Open (pastaDeTrabalho) Workbooks(arquivo).Sheets(1)Range("A1:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlBlanks).EntireRow.Delete Columns(2).Delete 'Workbooks(arquivo).Sheets(1).Range("BC2:BC" & linhas).Select 'Salva planilha aberta ActiveWorkbook.Save 'Fecha planilha Workbooks(arquivo).Close linhaDeInicio = linhaDeInicio + 1 End If pastaDeTrabalho = "" Next pastaDeTrabalhoAtiva = "" linhaDeInicio = 0 End Function Function listfiles(ByVal sPath As String) Dim vaArray As Variant Dim i As Long Dim oFile As Object Dim oFSO As Object Dim oFolder As Object Dim oFiles As Object Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFolder = oFSO.GetFolder(sPath) Set oFiles = oFolder.Files If oFiles.Count = 0 Then Exit Function ReDim vaArray(1 To oFiles.Count) i = 1 For Each oFile In oFiles vaArray(i) = oFile.Name i = i + 1 Next listfiles = vaArray End Function @OreiaG Tenho este que leva pra outra planilha mas não consigo tirar o loop eterno Sub CapturarValoresCSV() Dim FolderPath As String Dim FileName As String Dim wb As Workbook Dim wsDestino As Worksheet Dim lastRowDestino As Long Dim lastRowOrigem As Long Dim i As Long Dim j As Long ' Defina o caminho da pasta onde estão localizados os arquivos .csv FolderPath = "C:\csv\" ' Defina o nome da planilha de destino (matriz.csv) Set wsDestino = ThisWorkbook.Worksheets.Add wsDestino.Name = "Matriz" ' Inicializa a última linha da planilha de destino lastRowDestino = 1 ' Loop através dos arquivos .csv na pasta especificada FileName = Dir(FolderPath & "*.csv") Do While FileName <> "" ' Abre o arquivo .csv Set wb = Workbooks.Open(FolderPath & FileName) ' Captura os valores das colunas A, C, E, F, G e H lastRowOrigem = wb.Sheets(1).Cells(wb.Sheets(1).Rows.Count, "A").End(xlUp).Row For i = 1 To lastRowOrigem ' Verifica se a célula na coluna A não está vazia If wb.Sheets(1).Cells(i, "A").Value <> "" Then ' Captura os valores das colunas A, C, E, F, G e H Dim valorA As Variant Dim valorC As Variant Dim valorE As Variant Dim valorF As Variant Dim valorG As Variant Dim valorH As Variant valorA = wb.Sheets(1).Cells(i, "A").Value valorC = wb.Sheets(1).Cells(i, "C").Value valorE = wb.Sheets(1).Cells(i, "E").Value valorF = wb.Sheets(1).Cells(i, "F").Value valorG = wb.Sheets(1).Cells(i, "G").Value valorH = wb.Sheets(1).Cells(i, "H").Value ' Cola os valores capturados na planilha de destino wsDestino.Cells(lastRowDestino, "A").Value = valorA wsDestino.Cells(lastRowDestino, "B").Value = valorC wsDestino.Cells(lastRowDestino, "C").Value = valorE wsDestino.Cells(lastRowDestino, "D").Value = valorF wsDestino.Cells(lastRowDestino, "E").Value = valorG wsDestino.Cells(lastRowDestino, "F").Value = valorH lastRowDestino = lastRowDestino + 1 ' Aumenta o contador de linha na planilha de destino End If Next i ' Fecha o arquivo .csv sem salvá-lo wb.Close SaveChanges:=False ' Passa para o próximo arquivo .csv
  12. @OreiaG Muito obrigado pela ajuda porém o código exibe na tela e eu preciso que o resultado fique salvo numa nova aba e seja igual como esta na planilha em anexo na guia resultado.
  13. Como faço pra copiar os dados da linha inteira quando tiver dados somente na coluna A excluindo a coluna B no resultado? Exemplo: Resultado:
  14. Como faço um VBA para capturar valor da última célula preenchida da coluna A que estiver acima da primeira célula da coluna B. Em anexo tem uma planilha explicando como deve ser o resultado, nela o processo esta mais claro dados.xls

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...