|
Login
  • Page:
  • 1
  • 2

TOPIC: Effettuare una query su foglio excelh

Effettuare una query su foglio excelh 5 years 2 months ago #9979

  • mojito
  • mojito's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 16
  • Karma: -1
Ho un foglio Excel con delle colonne che partono da cella C4 e su cella F4 un codice che può essere a b c , tutto fino a riga 40.
il problema è che dovrei tramite vba sommare le relative celle in base al codice F4.
Esempio

Quantità codice
6."............patate
3..............patate
1..............pere
Ecc

Dovrei avere un record set così
9 patate
1 pere
The administrator has disabled public write access.

Effettuare una query su foglio excelh 5 years 2 months ago #9982

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
Ciao Mojito,
io non so fare le query.
risolverei così:
1) estrarrei un elenco univoco dei codici (alfanumerici spero), magari aiutandomi con un nome assegnato ai valori (da F5 e F40 supponendo in F4 i titoli), con questa:
=INDICE(Mio_range;CONFRONTA(PICCOLO(SE(CONFRONTA(Mio_range;Mio_range;)=RIF.RIGA(INDIRETTO("1:"&RIGHE(Mio_range)));CONTA.SE(Mio_range;"<="&Mio_range));RIF.RIGA(A2));CONTA.SE(Mio_range;"<="&Mio_range);))
La parte con lo smile deve intendersi così senza spazi: &Mio_range ) ; ) )
Da inserire con Maiusc + Ctrl + Invio
dove "Mio_range" è appunto il nome assegnato.
2) in una colonna coerente con l'estrazione del punto 1) userei un semplice somma.se.

Il tutto come da allegato.
Ciao, Lo

File Attachment:

File Name: esempioelencounivoco.xlsx
File Size: 10 KB
Last Edit: 5 years 2 months ago by lorenzo1957.
The administrator has disabled public write access.

Effettuare una query su foglio excelh 5 years 2 months ago #9985

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
mojito wrote:
il problema è che dovrei tramite vba sommare le relative celle in base al codice F4.
Non avevo valutato la parola VBA.
un accrocchio in quanto elaborato da un più semplice combobox:
Sub Macro1()
Sheets("foglio1").Select
'---facciamo una lista unica dei codici
Dim v, e
Dim Codice(50)
Dim Quantita(50)
With Sheets("Foglio1").Range("F5:F40")
v = .Value
End With
With CreateObject("scripting.dictionary")
.comparemode = 1
i = 1
For Each e In v
If Not .exists(e) Then
.Add e, Nothing
Codice(i) = e
i = i + 1
End If
Next
End With

Max = i

Range("f5").Select
Do While ActiveCell.Value <> ""
For i = 1 To Max
If ActiveCell.Value = Codice(i) Then Quantita(i) = Quantita(i) + ActiveCell.Offset(0, -3).Value
Next i
ActiveCell.Offset(1, 0).Select
Loop
'----test output
Range("f50").Select
For i = 1 To Max
ActiveCell.Value = Codice(i)
ActiveCell.Offset(0, -3) = Quantita(i)
ActiveCell.Offset(1, 0).Select
Next i
End Sub

Ciao, Lo
PS: vedi anche allegato.
Attachments:
Last Edit: 5 years 2 months ago by lorenzo1957.
The administrator has disabled public write access.

Effettuare una query su foglio excelh 5 years 2 months ago #9986

  • mojito
  • mojito's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 16
  • Karma: -1
grazie, adesso provo a modificarlo in base ai miei riferimenti.
anche se mi è stato chiesto che in base al tipo di codici (patate ecc) non ho solo quantità ma 3 colonne da sommare in base alla tipologia del codice,

quantità magaz a quantità magaz b quantità magaz c
The administrator has disabled public write access.

Effettuare una query su foglio excelh 5 years 2 months ago #9987

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
mojito wrote:
mi è stato chiesto che in base al tipo di codici (patate ecc) non ho solo quantità ma 3 colonne da sommare in base alla tipologia del codice,

quantità magaz a quantità magaz b quantità magaz c

preventivamente dimensionerai QuantitaA; QuantitaB; quantitaC poi nidifichi come segue:
Do While ActiveCell.Value <> ""
For i = 1 To Max
If ActiveCell.Value = Codice(i) Then QuantitaA(i) = QuantitaA(i) + ActiveCell.Offset(0, -3).Value
If ActiveCell.Value = Codice(i) Then QuantitaB(i) = QuantitaB(i) + ActiveCell.Offset(0, -2).Value
If ActiveCell.Value = Codice(i) Then QuantitaC(i) = QuantitaC(i) + ActiveCell.Offset(0, -1).Value
Next i
ActiveCell.Offset(1, 0).Select
Loop

Ciao, Lo
The administrator has disabled public write access.

Effettuare una query su foglio excelh 5 years 2 months ago #9988

  • mojito
  • mojito's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 16
  • Karma: -1
graziee,
ci provo e ti faccio sapere.
ok
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.654 seconds