Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 8 anni fa

Aiuto Macro OFFICE EXCEL ACCESS VBA?

ho una tabella di 10 colonne e circa 16000 righe sui che devo fare delle maschere con dei pulsanti a cui legare delle macro. la prima colonna di questa tabella rappresenta dei codici diversi che contengono al loro interno due sequenze di carattere: xxxxx-OAxxxx oppure xxxxx-OFxxx dove le x sono altri caratteri che per il momento non mi interessano. a me serve una macro che tramite un tasto mi riesce a contare i codici che hanno al loro interno -OA e quelli che hanno al loro interno -OF ovvero verificare l'occorrenza di quei 3 caratteri. mi date una mano per favore?

2 risposte

Classificazione
  • 8 anni fa
    Risposta preferita

    Devi solo applicare l'istruzione Instr, esempio banale;

    Sub CountByValue()

    sSheetName = "Foglio1" 'Nome del foglio su cui lavorare

    Column = "A" ' Nome della colonna contenente i codici

    CurrCell = 1 ' Numero di cella di partenza

    CellCount_OA = 0

    CellCount_OF = 0

    'Eseguo un ciclo alla ricerca di celle contenenti un valore

    Do Until Sheets(sSheetName).Range(Column & CurrCell).Value = ""

    sCellaValue = Sheets(sSheetName).Range(Column & CurrCell).Value

    'Verifico le occorrenze

    If InStr(1, sCellaValue, "-OA") Then

    CellCount_OA = CellCount_OA + 1

    ElseIf InStr(1, sCellaValue, "-OF") Then

    CellCount_OF = CellCount_OF + 1

    End If

    CurrCell = CurrCell + 1

    Loop

    'Visualizzo i risultati

    MsgBox ("Found -OA: " & CellCount_OA)

    MsgBox ("Found -OF: " & CellCount_OF)

    End Sub

    Ovviamente una volta identificate le occorrenze posso elaborare i dati come meglio credo.

    Considera che eseguire una Macro su 16000 record in Excel richiede diverso tempo, il mio consiglio è quello di trasferire tutti questi dati in un Database ed eseguire delle query, ottenendo gli stessi risultati ma in tempi brevissimi.

    • Commenter avatarAccedi per rispondere alle risposte
  • 8 anni fa

    Ciao puoi utilizzare la funzione Conta.se in questo modo:=CONTA.SE(INTERVALLO;"*-OA*")+CONTA.SE(INTERVALLO;"*-OF*")

    • Commenter avatarAccedi per rispondere alle risposte
Altre domande? Fai una domanda e ottieni le risposte che cerchi.