Condividi:        

[excel] macro cerca nome e cancella riga/colonna

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[excel] macro cerca nome e cancella riga/colonna

Postdi Teq144 » 08/06/06 15:56

Ho una matrice di celle 10x10 con cognomi
Devo fare una macro che cerchi in quale riga e in quale colonna si trovi il nome inserito attraverso un inputbox e, una volta trovato, cancelli tutta quella riga e la relativa colonna.
Il mio codice inziale è così:

Codice: Seleziona tutto
Sub cercanome ()
dim r,c as integer
dim nome as string
nome = Inputbox("Inserisci nome")
for c=1 to10
for r=1 to10
if cells(r,c) = nome then
???


Come devo continuare seguendo questa strada?[/code]
http://utenti.lycos.it/nightofalien - Avventura grafica in creazione!
Teq144
Utente Junior
 
Post: 16
Iscritto il: 16/03/06 11:51

Sponsor
 

Postdi Alexsandra » 08/06/06 17:51

Sono di corsa di "butto" lì una macro
Codice: Seleziona tutto
Sub Elimina()
For Each cella In Range("A1:a10")
If cella.Value = "aaa" Then
cella.EntireRow.Delete
End If
Next cella

For Each cella1 In Range("A1:c1")
If cella1.Value = "aaa" Then
cella1.EntireColumn.Delete
End If
Next cella1
End Sub
prova a sostituire "aaa" con un input, così comè il codice ti cancella sia riga che colonna.
Caso mai stasera quando torno a casa te la metto giù meglio
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi Anthony47 » 08/06/06 18:02

Ciao Teq
Per capire:
la matrice e’ larga 10 colonne e alta 10 righe, giusto?
Quindi in ogni riga ci sono 10 cognomi, e in ogni colonna ce ne sono altrettanti (in totale 19 cognomi diversi).
1) Se, trovato un cognome, chiedi di cancellare “tutta quella riga e la relativa colonna” significa che si cancelleranno 19 cognomi; e’ quello che intendi realizzare, o vorresti cancellare solo il cognome che hai cercato?
2) Inoltre, per “cancellare” tu intendi “azzerare il valore” (cosi’ che la cella rimane vuota, a gruviera) o “rimuovere” la cella o riga o colonna (a seconda della risposta in 1); in questa seconda ipotesi ci sono altre domande, ma per evitare il nesting di troppi if per ora mi fermo qui.

Una domanda generica:
l’ organizzazione a matrice 10*10 e’ obbligatoria o puo’ essere invece una lista verticale?

Ciao, a dopo.
Avatar utente
Anthony47
Moderatore
 
Post: 19440
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Teq144 » 08/06/06 18:40

Allora:
Si, ci sono 19 cognomi diversi
1) Intendo cancellare i valore nella riga e relativa colonna, non voglio cancellare le colonne
2) Ti faccio un esempio, se il cognome si trova in A2, significa che tutti i valori della colonna A devono essere cancellati e tutt i cognomi che si trovarno nella righa 2 devo essere cancellati... quindi la colonna A diviene tutta vuota, e le celle B2 - C2 - D2 - E2 - F2 diventano vuote..
Capito cosa intendo?

Però mi serve nel modo in cui l'ho incominciata io... perkè con questa marco devo dimostrare al mio prof di aver capito la programmazione in visual basic, e per fare questo devo usare i costrutti, quindi la macro di Alexsandra non può andare bene xke ci sono funzioni che nn abbiamo neanche studiato.
http://utenti.lycos.it/nightofalien - Avventura grafica in creazione!
Teq144
Utente Junior
 
Post: 16
Iscritto il: 16/03/06 11:51

Postdi Anthony47 » 08/06/06 19:27

Questa funziona, ma non garantisco che avrai un buon voto. Guarda i commenti, ci sono possibili variazioni da fare in funzione di quello che avete studiato; non so quanto e’ scandaloso quell’ ipotetico Exit Sub all’ interno di un ciclo If (servirebbe a interrompere la ricerca dopo il primo ritrovamento), comunque o lo scommenti (per renderlo esecutivo) o cancelli la riga.

Codice: Seleziona tutto
Sub cercanome()
Dim r, c, wr, wc As Integer
Dim nome As String
nome = InputBox("Inserisci nome")
For c = 1 To 10
For r = 1 To 10
If Cells(r, c) = nome Then
 For wr = 1 To 10    'azzera colonna
  Cells(wr, c).ClearContents           '<-oppure usa cells(wr,c) = ""
  Next wr
 For wc = 1 To 10    'azzera riga
  Cells(r, wc).ClearContents          '<-oppure usa Cells(r, wc) = ""
  Next wc
'Exit Sub                              '<-scommentare per uscire dopo 1° ritrovamento
End If

Next r                                 'scan per 10 righe
Next c                                 '... su 10 colonne

End Sub


Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19440
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Alexsandra » 08/06/06 22:09

Teq144 ha scritto:... perkè con questa marco devo dimostrare al mio prof di aver capito la programmazione in visual basic....
Bravo :D :D a fine scuola !!!. cerca in questa sezione che trovi diverso materiale ed esempi di codice ...... speriamo in un bel voto
studiare un pò di più no :lol: :lol: :lol: Auguri
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31


Torna a Applicazioni Office Windows


Topic correlati a "[excel] macro cerca nome e cancella riga/colonna":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti