Domanda:
chi è in grado di aiutarmi con Excel Visual Basic per applicazioni?
iorso
2006-10-31 02:09:10 UTC
Prima di porre la domanda "tecnica" ecco alcune premesse:
1) per le mani ho un vecchio manuale di Excel VBA versione 5 !!!
all'epoca i comandi nei moduli macro erano in italiano.
ora nella versione Excel 2003 che sto usando le istruzioni sono in inglese. (anche se Excel è in italiano)
Il problema è che non riesco a "trasferire"/"trasformare" la formula Excel CERCA.VERT e adattarla al linguaggio Visual Basic
La guida che ho riporta questo esempio:
x = Applicazione.CercaVert (10;ZonaCorrente;1)
la guida fa notare che in VBA si è eliminato il punto in mezzo a Cerca&Vert.
Io sto provando ad utilizzare questa cosa e ho "tradotto" il comando come:
x= Application.CercaVert (10;ZonaCorrente;1)
e ottengo errore
ho provato a tradurre CercaVert come FindVert (non ricordo la rispettiva formula in inglese!)
in ogni caso non riesco ad usare la formula Cerca.Vert in "versione" VBA.
So che è difficile rispondere se non sapete che cosa sto creando.
vi chiedo però di mandarmi esempi....
Tre risposte:
xobocop
2006-10-31 02:35:51 UTC
In Excel 2003 la funzione si chiama ancora CERCA.VERT e prende gli stessi parametri. Non so come si chiami in inglese, ma puoi cercarla nell'elenco delle formule di ricerca e riferimento.



Con VB, per assegnare una funzione ad una cella basta fare in questo modo:

Cells(nRiga, nColonna).Formula = "=SUM(A1:A30)"



Fammi sapere se hai altri problemi
fipoit
2006-10-31 02:43:29 UTC
Ciao,

potersti provare dopo aver instanziato una variabile di tipo application Excel, creare una tua funzione del tipo :



Application.WorksheetFunction.VLookup (...)



oppure provare con una funzione tipo :



Public Sub CercaInVerticale()



Worksheets("Foglio1").Range("F2").FormulaLocal = "=CERCA.VERT($D$2;$A$1:$B$4;2;0)"



End Sub



la Tabella qui è: A1:B4

il D2 ho il dato da cercare

la formula è restituita in F2

tutto in Foglio1.



oppure qualcosa del tipo:

Public Sub Test()

Dim cerca() As Integer, i As Integer, j As Integer

Dim a As Integer, b As Integer,c As Integer

i = Application.CountA(Sheets("Foglio1").Range("A1:Z1"))

j = Application.CountA(Sheets("Foglio2").Range("A1:Z1"))

ReDim cerca(1 To j)

Sheets("Foglio1").Activate

With Sheets("Foglio2")

For a = 1 To j

For b = 1 To i

If .Cells(1, a) = Cells(1, b) Then cerca(a) = b

Next b

Next a

For a = 1 To j

If cerca(a) = 0 Then

i = i + 1

cerca(a) = i

Cells(1, i) = .Cells(1, a)

End If

Next

a = 2

While Cells(a, 1) <> ""

ID = Cells(a, 1)

If Not IsError(Application.Match(ID, .Range("A:A"), 0)) Then

c = Application.Match(ID, .Range("A:A"), 0)

For b = 1 To j

Cells(a, cerca(b)) = .Cells(c, b).Value

Next

End If

a = a + 1

Wend

End With

End Sub

Ipotizzando che i tuoi elenchi partano da A1 entrambi.



P.S. - Scusa se non sono indentate ma...onestamente non ho voglia di rimettermi a formattare il testo ;P



Spero ti sia utile

Ciao
alistin23
2006-10-31 02:32:11 UTC
Anch'io ho Excel 2003 e forse ti posso dare una mano. Se vai sel tasto funzione f(x) ti appare un menu. Nella prima riga c'è "selezionare una categoria"- tu prova a selezionare "tutte". Sotto c'è il menu "selezionare una funzione" e tra queste appare CERCA.VERT. La formula dice (valore;matrice_tabella;indice;intervallo)e spiega che serve per creare un valore nella prima colonna sinistra di una tabella e restituisce un valore nella stessa riga da una colonna specificata.La tabella viene ordinata in ordine ascendente per impostazione predefinita. qua sotto ti ho riportato quello che dice la guida in linea così forse potrà spiegartelo meglio di me!

Sintassi



CERCA.VERT(valore;tabella_matrice;indice;intervallo)



Valore è il valore da ricercare nella prima colonna della matrice. Valore può essere un valore, un riferimento o una stringa di testo.



Tabella_matrice è la tabella di informazioni nella quale vengono cercati i dati. Utilizzare un riferimento a un intervallo oppure un nome di intervallo, quale Database o Elenco.



Se intervallo è VERO, i valori nella prima colonna di tabella_matrice dovranno essere disposti in ordine crescente: ...; -2; -1; 0; 1; 2; ...; A-Z; FALSO; VERO. In caso contrario, CERCA.VERT potrebbe non restituire il valore corretto. Se intervallo è FALSO, non sarà necessario ordinare tabella_matrice.



È possibile disporre i valori in ordine crescente scegliendo Ordina dal menu Dati e selezionando l'opzione Crescente.



I valori nella prima colonna di tabella_matrice possono essere testo, numeri o valori logici.



La funzione non rileva le maiuscole.



Indice è il numero di colonna in tabella_matrice dal quale deve essere restituito il valore corrispondente. Indice uguale a 1 restituisce il valore nella prima colonna di tabella_matrice, indice uguale a 2 restituisce il valore nella seconda colonna di tabella_matrice e così via. Se indice è minore di 1, CERCA.VERT restituirà il valore di errore #VALORE!. Se indice è maggiore del numero di colonne in tabella_matrice, CERCA.VERT restituirà il valore di errore #RIF!.



Intervallo è un valore logico che specifica il tipo di ricerca che CERCA.VERT dovrà eseguire. Se è VERO o è omesso, verrà restituita una corrispondenza approssimativa, ovvero il valore successivo più grande che sia minore di valore. Se è FALSO, CERCA.VERT troverà una corrispondenza esatta. Qualora non venga trovata alcuna corrispondenza, verrà restituito il valore di errore #N/D.



Osservazioni



Se CERCA.VERT non riesce a trovare valore e intervallo è VERO, utilizzerà il valore più grande minore o uguale a valore.

Se valore è minore del valore più piccolo della prima colonna di tabella_matrice, CERCA.VERT restituirà il valore di errore #N/D.

Se CERCA.VERT non riesce a trovare valore e intervallo è FALSO, CERCA.VERT restituirà il valore di errore #N/D.

Esempio



L'esempio può essere più semplice da comprendere se lo si copia in un foglio di lavoro vuoto.



Procedura



Creare una cartella di lavoro o un foglio di lavoro vuoto.

Selezionare l'esempio nell'argomento della Guida. Non selezionare le intestazioni della riga o della colonna.





Selezionare un esempio dalla Guida



Premere CTRL+C.

Nel foglio di lavoro, selezionare la cella A1 e premere CTRL+V.

Per passare dalla visualizzazione dei risultati alla visualizzazione delle formule che calcolano il risultato, premere CTRL+MAIUSC+8 oppure scegliere Verifica formule dal menu Strumenti, quindi fare clic su Modalità Verifica formule.

L'esempio utilizza i valori per l'aria alla pressione di 1 atmosfera.





1

2

3

4

5

6

7

8

9

10

A B C

Densità Viscosità Temperatura

0,457 3,55 500

0,525 3,25 400

0,616 2,93 300

0,675 2,75 250

0,746 2,57 200

0,835 2,38 150

0,946 2,17 100

1,09 1,95 50

1,29 1,71 0

Formula Descrizione (risultato)

=CERCA.VERT(1;A2:C10;2) Cerca 1 nella colonna A e restituisce il valore della colonna B sulla stessa riga (2,17)

=CERCA.VERT(1;A2:C10;3;VERO) Cerca 1 nella colonna A e restituisce il valore della colonna C sulla stessa riga (100)

=CERCA.VERT(0,7;A2:C10;3;FALSO) Cerca 0,746 nella colonna A. Non esiste corrispondenza esatta nella colonna A, pertanto viene restituito un errore (#N/D)

=CERCA.VERT(0,1;A2:C10;2;VERO) Cerca 0,1 nella colonna A. Poiché 0,1 è minore del valore più piccolo presente nella colonna A, viene restituito un errore (#N/D)

=CERCA.VERT(2;A2:C10;2;VERO) Cerca 2 nella colonna A e restituisce il valore della colonna B sulla stessa riga (1,71)


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...