formula excel

Import/Export, obiecte embedded, etc
Închis
Roxana0001
Mesaje: 1
Membru din: Sâm Aug 22, 2015 6:28 pm

formula excel

Mesaj de Roxana0001 » Dum Aug 23, 2015 9:08 am

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. ;)
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

csaba1960
Moderator
Moderator
Mesaje: 187
Membru din: Mie Feb 02, 2011 4:05 pm
Localitate: Cluj-Napoca

Re: formula excel

Mesaj de csaba1960 » Mie Sep 02, 2015 10:31 am

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.

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
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.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

eoliann
Mesaje: 8
Membru din: Joi Noi 17, 2011 8:15 pm

Re: formula excel

Mesaj de eoliann » Sâm Feb 13, 2016 10:21 am

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
Salut,
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!

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: formula excel

Mesaj de Indigo » Sâm Feb 13, 2016 4:21 pm

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.

csaba1960
Moderator
Moderator
Mesaje: 187
Membru din: Mie Feb 02, 2011 4:05 pm
Localitate: Cluj-Napoca

Re: formula excel

Mesaj de csaba1960 » Sâm Feb 13, 2016 6:42 pm

Buna
Salut,
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!
Daca re referi la cod

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
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]

Închis

Înapoi la “Probleme cu aplicatiile ce folosesc Excel ca aplicatie ajutatoare”