vbstreets Conferința - vizualizare temă - Excel

Ca o foaie de lucru Excel pentru a găsi cea mai rapidă linie în care câteva celule din valorile îndeplinesc condițiile?

În cazul în care această celulă este 1, cred că cel mai rapid: MoyList.Range ( "A: A"). Găsiți (ce:. = "Valoare1")

Și dacă veți căuta pe mai multe coloane? Să primele două.
Puteți, desigur, ciclul - dar lent pe matrice de mari dimensiuni.
Pentru i = 1 până la PoslednyayaStroka
în cazul în care celulele (i, 1) .value = valoare1 și celule (i, 2) .value = Value2 atunci
„Acest lucru este găsit
în cazul în care se încheie
următor I

Dar în ce fel este cel mai rapid de a face acest lucru?
Nu spun într-o matrice a tuturor arunca și să-și rezolve - acest lucru nu este o schimbare fundamentală. Baza de date este cel mai rapid - o solicitare pentru condiții de câmp, puteți găsi o înregistrare a acesteia și să citească valorile tuturor câmpurilor necesare. Cum de a Excel pentru a face o căutare rapidă pe câteva linii de celule și de a găsi linia? Exact ceea ce am nevoie, nu este un șir de caractere și alte valori din acel rând.

tipul de date în celulele numerice, text sau amestecat? Fie că datele pot fi repetate în diferite linii?
Și în funcție de ea de a alege între copac, hash, sau o simplă căutare binară.

O, Sancta Simplicitas!

tip de valoare de text. Există valori duplicate în fiecare coloană, dar se combină pentru a da un identificator unic (sau ca rezultat găsit potrivire).
Da, poate ai dreptate indiciu - face YacheykaStolbtsa1 coloana auxiliară YacheykaStolbtsa2, nu caută pe ea și apoi curăța după procesarea valorilor în această coloană.
Și cum altfel poți căuta cele două coloane de text?
Pentru o căutare binară care urmează să fie sortate? Nu vreau să ating aceste date.

Totuși, un alt gând a venit în minte. De fapt, acest tabel pot fi copiate într-o nouă foaie de lucru, există un fel de câmp unificat, sau chiar cum să o facă și căutare. Apoi, această foaie este îndepărtată. Ce o modalitate de a chiar și cele mai rapide căutare de tip text? Se crede că în acest domeniu combinat de date unice, dar încă oameni fac - în cazul extrem este posibil să se verifice unicitatea început. Căutați o mulțime - acest director de tip tabel, astfel încât timpul de căutare este importantă.

Și cât de multe coloane? O căutare trebuie efectuată numai în primele două coloane, sau în oricare două? Dacă al doilea mesaj cu coloana auxiliară dispare (și nu este eficient, deoarece are aceeași complexitate ca expresie în cazul în care celulele # 40; i, 1 # 41; .value = valoare1 și celule # 40; i, # 2 41; .value = Value2 atunci).
De exemplu, există un tabel suplimentar (sub litere se referă la valorile din celule):
Cod: Selectați toate 1 2 3 4 5

1 A B C D E
2 F G H I J
3 K L M N O
Apoi, aveți nevoie pentru a lega toate cuplurile, în conformitate cu acest număr linie:
Cod: Selectați toate 1 AB = BC = CD = 1 1 DE = 1
1 AC = BD = 1 CE = 1
AD = 1 BE = 1
AE = 1

FG = GH = 2 2 2 HI = IJ = 2
FH = 2 GI = 2 HJ = 2
FI = 2 GJ = 2
FJ = 2
și așa mai departe.

Rămâne să găsească o modalitate de a păstra aceste cupluri. Ea vine în minte B-Tree, așa cum este cel mai frecvent utilizat tip de indice și diferite soiuri sale sunt utilizate în aproape toate bazele de date importante.

O, Sancta Simplicitas!