formula excel
-
- Mesaje: 1
- Membru din: Sâm Aug 22, 2015 6:28 pm
formula excel
Am incercat sa fac in excel un fel de aplicatie in care sa scriu adeverintele , numai ca am 2 probleme.
1. In primul worksheet denumit "Export adeverinte" am datele exportate din worksheet'ul doi denumit Adeverinte. Numai ca la completarea tabelului din primul worksheet cu valorile din worksheet'ul doi nu gasesc formula corespunzatoare ,deoarece am ca referinta atat "nr.de adv " cat si numele persoanei pt care" tai "adeverinta .
2. De asemenea pe aceeasi adeverinta cu acelasi nume de persoana pot avea mai multe denumiri de deseuri /cantitati/valoari/preturi fiind de asemenea luate din sheet'ul 2.
Va rog sa ma ajutati.
1. In primul worksheet denumit "Export adeverinte" am datele exportate din worksheet'ul doi denumit Adeverinte. Numai ca la completarea tabelului din primul worksheet cu valorile din worksheet'ul doi nu gasesc formula corespunzatoare ,deoarece am ca referinta atat "nr.de adv " cat si numele persoanei pt care" tai "adeverinta .
2. De asemenea pe aceeasi adeverinta cu acelasi nume de persoana pot avea mai multe denumiri de deseuri /cantitati/valoari/preturi fiind de asemenea luate din sheet'ul 2.
Va rog sa ma ajutati.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: formula excel
Buna
Iți propun o varianta de rezolvare a problemei.
Am făcut câteva modificări în aplicația ta. Încerc sa le recapitulez.
1. Am mai adăugat încă un sheet date.
Aici am introdus datele care se repeta in tabelele tale - Descriere produs si Adresa.
Pentru amândouă am făcut Dynamic Range, adică o selecție(zona) care se modifica dinamic in funcție dacă adaugi/ștergi elemente.
Formula este
=OFFSET(date!$A$1;0;0;COUNTA(date!$A:$A);1)
2. In tabelul de la DATE VANZATOR in coloana Adresa am introdus un Data Validation List, coloanele B,C si D am introdus conditii de validare de 2, 6 respectiv 13 caractere.
In pagina ADEVERINTE in coloana E ai un alt Data Validation List.
3. In pagina EXPORT ADEVERINȚĂ am modificat mai multe formule.
O parte sunt mici fineturi.
Eu in locul tau in loc de CONCATENATE as folosi metoda din randul 10 unde textul ti-am scris in mai multe celule in loc de o celula. Este mai usor de gestionat.
Observație
Si emitentul actului de identitate as trece in tabel si as extrage in mod asemănător cu VLOOKUP deasemenea si numărul de înmatriculare.
4. Pentru rezolvarea problemei de la pct 2 am făcut un macro care pornește la apăsare butonului.
Practic cauta toate randurile care in tabelul ADEVERINTE care au acelasi numar, cel indicat in celula M6 si inserează in tabelul din EXPORT ADEVERINȚĂ
In VBA pentro o scrie mai usoara si din ratiuni ca programul sa fct si in cazul in care schimbi denumirea paginilor am numit cu e EXPORT ADEVERINȚĂ si cu a ADEVERINTE
Macroul funcționează cu actuala structura a datelor din aplicație. Daca modifici structura paginii ADEVERINTE sau EXPORT ADEVERINȚĂ poate trebuie sa faci mici adaptări.
In Excel formulele se rescriu automat dacă adaugi/ștergi rânduri/coloane în VBA nu.
Aplicația conține macro, trebuie sa permiți sa ruleze.
Iți propun o varianta de rezolvare a problemei.
Am făcut câteva modificări în aplicația ta. Încerc sa le recapitulez.
1. Am mai adăugat încă un sheet date.
Aici am introdus datele care se repeta in tabelele tale - Descriere produs si Adresa.
Pentru amândouă am făcut Dynamic Range, adică o selecție(zona) care se modifica dinamic in funcție dacă adaugi/ștergi elemente.
Formula este
=OFFSET(date!$A$1;0;0;COUNTA(date!$A:$A);1)
2. In tabelul de la DATE VANZATOR in coloana Adresa am introdus un Data Validation List, coloanele B,C si D am introdus conditii de validare de 2, 6 respectiv 13 caractere.
In pagina ADEVERINTE in coloana E ai un alt Data Validation List.
3. In pagina EXPORT ADEVERINȚĂ am modificat mai multe formule.
O parte sunt mici fineturi.
Eu in locul tau in loc de CONCATENATE as folosi metoda din randul 10 unde textul ti-am scris in mai multe celule in loc de o celula. Este mai usor de gestionat.
Observație
Si emitentul actului de identitate as trece in tabel si as extrage in mod asemănător cu VLOOKUP deasemenea si numărul de înmatriculare.
4. Pentru rezolvarea problemei de la pct 2 am făcut un macro care pornește la apăsare butonului.
Cod: Selectaţi tot
Sub caut()
Dim i As Integer, k As Integer
Range(e.Cells(17, 2), e.Cells(22, 6)).ClearContents
k = 17 ' primul rand din tabel
i = 2: Do While a.Cells(i, 1) <> ""
If a.Cells(i, 1) = e.Cells(6, 13) Then
e.Cells(k, 2) = a.Cells(i, 5): e.Cells(k, 3) = a.Cells(i, 6): e.Cells(k, 4) = a.Cells(i, 7):
e.Cells(k, 5) = a.Cells(i, 8): e.Cells(k, 6) = a.Cells(i, 9):
k = k + 1
End If
i = i + 1: Loop
End Sub
In VBA pentro o scrie mai usoara si din ratiuni ca programul sa fct si in cazul in care schimbi denumirea paginilor am numit cu e EXPORT ADEVERINȚĂ si cu a ADEVERINTE
Macroul funcționează cu actuala structura a datelor din aplicație. Daca modifici structura paginii ADEVERINTE sau EXPORT ADEVERINȚĂ poate trebuie sa faci mici adaptări.
In Excel formulele se rescriu automat dacă adaugi/ștergi rânduri/coloane în VBA nu.
Aplicația conține macro, trebuie sa permiți sa ruleze.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: formula excel
Salut,csaba1960 scrie:In VBA pentro o scrie mai usoara si din ratiuni ca programul sa fct si in cazul in care schimbi denumirea paginilor am numit cu e EXPORT ADEVERINȚĂ si cu a ADEVERINTE
Cum se poate schimba numele paginii ca in codul tau?! Deoarece doresc sa utilizez codul tau dar adaptat la ceea ce imi trebuie mie.
Multumesc!
Re: formula excel
eoliann,
O foaie, poate fi denumita in cod, dupa ordinea naturala a foilor (Sheet1, Sheet2...etc) atentie la inserarea, stergerea sau/si mutarea foilor, sau dupa numele pe care il dai foii respective.
Sa zicem ca Sheet2 a fost redenumit BazaDate (acesta e numele pe care il vezi in fisier), Poti - in cod VBA - sa scrii Sheet2,range(".... sau Sheets("BazaDate").Range("...., poti folosi ambele variante.
O foaie, poate fi denumita in cod, dupa ordinea naturala a foilor (Sheet1, Sheet2...etc) atentie la inserarea, stergerea sau/si mutarea foilor, sau dupa numele pe care il dai foii respective.
Sa zicem ca Sheet2 a fost redenumit BazaDate (acesta e numele pe care il vezi in fisier), Poti - in cod VBA - sa scrii Sheet2,range(".... sau Sheets("BazaDate").Range("...., poti folosi ambele variante.
Re: formula excel
Buna
deci la denumiri de genul
e.Cells(k, 2)
unde e este "numele" sheetului in VBA, in editorul VBA selectezi sheetul si in Properties schimb (name) in cel dorit
[img]
http://autostrada-transilvania.ro/excelVBA.jpg
[/img]
Daca re referi la codSalut,
Cum se poate schimba numele paginii ca in codul tau?! Deoarece doresc sa utilizez codul tau dar adaptat la ceea ce imi trebuie mie.
Multumesc!
Cod: Selectaţi tot
Sub caut()
Dim i As Integer, k As Integer
Range(e.Cells(17, 2), e.Cells(22, 6)).ClearContents
k = 17 ' primul rand din tabel
i = 2: Do While a.Cells(i, 1) <> ""
If a.Cells(i, 1) = e.Cells(6, 13) Then
e.Cells(k, 2) = a.Cells(i, 5): e.Cells(k, 3) = a.Cells(i, 6): e.Cells(k, 4) = a.Cells(i, 7):
e.Cells(k, 5) = a.Cells(i, 8): e.Cells(k, 6) = a.Cells(i, 9):
k = k + 1
End If
i = i + 1: Loop
End Sub
e.Cells(k, 2)
unde e este "numele" sheetului in VBA, in editorul VBA selectezi sheetul si in Properties schimb (name) in cel dorit
[img]
http://autostrada-transilvania.ro/excelVBA.jpg
[/img]