Condividi tramite

Con vba excel come posso con il metodo find ottenere la prima occorrenza di Aprile in una colonna di date ?

Anonimo
2023-05-21T17:42:28+00:00

Con vba excel come posso con il metodo find ottenere la prima occorrenza di Aprile in una colonna di date ? Non conosco la data precisa da cercare (potrebbe essere 01/04/2023 oppure 08/04/2023). A me serve sapere qual'e' la prima cella che contiene una data di Aprile 2023 Forse find non è il metodo più appropriato? Grazie dell'aiuto.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2023-05-21T18:17:48+00:00

    Ciao

    Sono Sneha e sarei felice di aiutarti con la tua domanda. Ci scusiamo per l'inconveniente causato.

    Per farlo, prova a seguire il codice: -

    Sub FindFirstApril() Dim ws come foglio di lavoro Dim rng come intervallo Attenua foundCell come intervallo Dim searchValore come data

    Per prima cosa, identifichiamo il foglio di lavoro con cui stai lavorando. ' Please replace "Sheet1" with the name of your actual sheet. Set ws = ThisWorkbook.Sheets("Foglio1")

    ' Next, specify the range of dates you want to search within. You can modify "A1:A100" to fit your specific range requirements. Imposta rng = ws. Intervallo("A1:A100")

    ' Ora, determiniamo il valore di ricerca - aprile dell'anno in corso. searchValue = DateSerial(Year(Date), 4; 1)

    ' We'll use the Find method to locate the first occurrence of April within the range. The LookIn parameter is set to search within the cell values, and LookAt is set to find an exact match. Imposta foundCell = rng. Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)

    Dopo la ricerca, controlleremo se è stata trovata una corrispondenza. Se non foundCell non è nulla, allora If a match is found, we'll display a message box with the address of the cell. MsgBox "La prima occorrenza di aprile nell'intervallo specificato si trova nella cella " & foundCell.Address & "." Altro Se non viene trovata alcuna corrispondenza, verrà visualizzato un messaggio che indica che April non è presente nell'intervallo. MsgBox "Aprile non viene trovato nell'intervallo specificato." Fine Se Fine sub

    Assicurati di sostituire "Foglio1" con il nome effettivo del foglio di lavoro con cui stai lavorando. Inoltre, regola l'intervallo "A1:A100" in modo che corrisponda all'intervallo in cui si trovano le date.

    Se hai altre domande o hai bisogno di assistenza con qualsiasi cosa, non esitare a farmelo sapere. Sarà mio piacere assistervi.

    Migliori saluti Sneha

    Restituisci alla comunità. Aiuta la persona successiva con questo problema indicando se questa risposta ha risolto il tuo problema. Fare clic su Sì o No nella parte inferiore.

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-05-22T23:11:21+00:00

    Ciao Luca,

    Buongiorno Miss Sneha Gupta, ho provato ad utilizzare il tuo codice ma purtroppo non ho risolto il problema, in quanto <searchValue = DateSerial(Year(Date), 4; 1)> mi restituisce 01/04/2023 che poi con

    <foundCell = rng. Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)> non viene trovata nessuna occorrenza in quanto nel range di ricerca la prima data di Aprile è 08/04/2023 e con questo metodo non viene trovata. Ho provato anche a fare la ricerca utilizzando i caratteri jolly (??/04/2023) ma anche così il valore (data) 08/04/2023 non viene trovato. Fin'ora l'unica soluzione che mi funziona è utilizzando un ciclo con condizione (> di) e (< di) , ma non so' se sia la soluzione ottimale. Ti sarei grato se riuscissi ad aiutarmi ulteriormente. Buona giornata.

    Se stai utilizzando Excel 365, prova qualcosa del genere:

    '========>>

    Option Explicit

    '-------->>

    Sub Trova_Prima_Data_In_Mese()

    Dim SH  As Worksheet 
    
    Dim Rng As Range, rFoundCell As Range 
    
    Dim arrIn As Variant, arrMese As Variant 
    
    Dim sMsg As String 
    
    Dim myDate As Variant 
    
    Dim iMonth As Long, LRow As Long 
    
    Dim UB2 As Long 
    
    Const sFoglio As String = **"Foglio1"                                  '&lt;&lt;=== Modifica** 
    
    Const sColonna\_Ricerca As String = **"A:A"                        '&lt;&lt;=== Modifica** 
    
    iMonth = Application.InputBox(Prompt:="Immetti il numero del mese", Title:="Mese di Ricerca", Default:=Month(Date), Type:=1) 
    
    Set SH = ThisWorkbook.Sheets(sFoglio) 
    
    With SH 
    
        LRow = LastRow(SH, .Range(sColonna\_Ricerca)) 
    
        Set Rng = SH.Range(sColonna\_Ricerca).Resize(LRow) 
    
    End With 
    
    arrIn = Rng.Value 
    
    arrMese = Evaluate("=Sort(Filter(" & Rng.Address & ", Month(" & Rng.Address & ") =" & iMonth & ", """"))") 
    
    On Error Resume Next 
    
    UB2 = UBound(arrMese, 2) 
    
    On Error GoTo 0 
    
    If UB2 = 1 Then 
    
        sMsg = "La prima data nel mese " & MonthName(iMonth) & "= " & Format(arrMese(1, 1), "dd/mm/yyyy") 
    
    Else 
    
        sMsg = "Nessuna data trovata per il mese " & MonthName(iMonth) 
    
    End If 
    
    Call MsgBox(Prompt:=sMsg, \_ 
    
        Buttons:=vbInformation, \_ 
    
        Title:="REPORT")    
    

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

    Optional Rng As Range, \_ 
    
    Optional minRow As Long = 1) 
    
    If Rng Is Nothing Then 
    
        Set Rng = SH.Cells 
    
    End If 
    
    On Error Resume Next 
    
    LastRow = Rng.Find(What:="\*", \_ 
    
        After:=Rng.Cells(1), \_ 
    
        Lookat:=xlPart, \_ 
    
        LookIn:=xlFormulas, \_ 
    
        SearchOrder:=xlByRows, \_ 
    
        SearchDirection:=xlPrevious, \_ 
    
        MatchCase:=False).Row 
    
    On Error GoTo 0 
    
    If LastRow &lt; minRow Then 
    
        LastRow = minRow 
    
    End If 
    

    End Function

    '<<========

    Potresti scaricare il mio file di prova Luca20230523.xlsm

    A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-05-22T15:45:40+00:00

    Scusami Miss Sneha Gupta, ho risposto utilizzando per errore l'account di mia moglie.

    Donà Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-05-22T15:41:32+00:00

    Buongiorno Miss Sneha Gupta, ho provato ad utilizzare il tuo codice ma purtroppo non ho risolto il problema, in quanto <searchValue = DateSerial(Year(Date), 4; 1)> mi restituisce 01/04/2023 che poi con

    <foundCell = rng. Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)> non viene trovata nessuna occorrenza in quanto nel range di ricerca la prima data di Aprile è 08/04/2023 e con questo metodo non viene trovata. Ho provato anche a fare la ricerca utilizzando i caratteri jolly (??/04/2023) ma anche così il valore (data) 08/04/2023 non viene trovato. Fin'ora l'unica soluzione che mi funziona è utilizzando un ciclo con condizione (> di) e (< di) , ma non so' se sia la soluzione ottimale. Ti sarei grato se riuscissi ad aiutarmi ulteriormente. Buona giornata.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-05-21T20:40:36+00:00

    Ciao Sono Sneha e sarei felice di aiutarti con la tua domanda. Ci scusiamo per l'inconveniente causato. Per farlo, prova a seguire il codice: - Sub FindFirstApril() Dim ws come foglio di lavoro Dim rng come intervallo Attenua foundCell come intervallo Dim searchValore come data Per prima cosa, identifichiamo il foglio di lavoro con cui stai lavorando. ' Please replace "Sheet1" with the name of your actual sheet. Set ws = ThisWorkbook.Sheets("Foglio1") ' Next, specify the range of dates you want to search within. You can modify "A1:A100" to fit your specific range requirements. Imposta rng = ws. Intervallo("A1:A100") ' Ora, determiniamo il valore di ricerca - aprile dell'anno in corso. searchValue = DateSerial(Year(Date), 4; 1) ' We'll use the Find method to locate the first occurrence of April within the range. The LookIn parameter is set to search within the cell values, and LookAt is set to find an exact match. Imposta foundCell = rng. Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole) Dopo la ricerca, controlleremo se è stata trovata una corrispondenza. Se non foundCell non è nulla, allora If a match is found, we'll display a message box with the address of the cell. MsgBox "La prima occorrenza di aprile nell'intervallo specificato si trova nella cella " & foundCell.Address & "." Altro Se non viene trovata alcuna corrispondenza, verrà visualizzato un messaggio che indica che April non è presente nell'intervallo. MsgBox "Aprile non viene trovato nell'intervallo specificato." Fine Se Fine sub Assicurati di sostituire "Foglio1" con il nome effettivo del foglio di lavoro con cui stai lavorando. Inoltre, regola l'intervallo "A1:A100" in modo che corrisponda all'intervallo in cui si trovano le date. Se hai altre domande o hai bisogno di assistenza con qualsiasi cosa, non esitare a farmelo sapere. Sarà mio piacere assistervi. Migliori saluti Sneha Restituisci alla comunità. Aiuta la persona successiva con questo problema indicando se questa risposta ha risolto il tuo problema. Fare clic su Sì o No nella parte inferiore.

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    Grazie 1000 per la tua tempestiva risposta Miss Sneha Gupta. Credo proprio di aver risolto il mio problema.

    La risposta è stata utile?

    0 commenti Nessun commento