Problemă de #Excel – Numerotare automată linii [Updated]

Bună ziua tuturor fanilor Excel. Am pentru voi o provocare, spun eu interesantă, dar probabil și utilă pentru mulți.

Mulțumesc tuturor celor care au participat la rezolvarea problemei sau sunt interesați de ea. Sper să fie utile. Soluțiile primite sunt prezentate în partea de jos a articolului.

În modelul de date din imaginea de mai jos, se cere ca Task-urile (sau alte tipuri de înregistrări de nivel 1, sau Heading 1 pentru cei familiarizați cu aplicațiile Word) trebuie să fie numerotate automat consecutiv. Condiția ca numele din coloana B să înceapă cu Task este obligatorie de respectat în date. Sau oricare alt identificator pentru înregistrările de nivel 1.

În celula A2 este singura care are scris pur și simplul nr. 1. Puteam face și dinamic acel număr cu funcția ROW()-1 în cazul meu. Restul numerelor sunt prin formulă.

Tot ceea ce nu este introdus ca Task (cele de nivel 2 sau Heading 2) trebuie să aibă numere în mod dinamic cu 1.1, 1.2 în funcție de numărul lor. În soluția mea, acel 1.1 nu este chiar un număr.


Pentru cei care vor să participe la această provocare, vă rog să trimiteți soluția prin e-mail la adresa: valy.greavu@outlook.com până la data de 22.05.2020 ora 14:00. Dacă sunt studenți de ai mei de la Master AA care rezolvă problema în termenul specificat le echivalez proba practică de laborator, de săptămâna viitoare cu 10 (primul care trimite cu soluția).

Aștept cu interes! :)

Update ora 22.05.2020 H16:00

 

Soluția mea

Chiar dacă pare o problemă simplă eu m-am complicat destul de mult în formulă.

Formula mea din celula A3 este:

=IF(LEFT(B3;4)=”Task”;MAX($A$2:A2)+1;MAX($A$2:A2)&”.”&(COUNTA(INDIRECT(CONCATENATE(ADDRESS(MATCH(MAX($A$2:A2);$A$2:A2;0)+1;1);”:”;ADDRESS(ROW()-1;1;4))))))

În această formulă compar dacă începutul textului din coloana B este cu Task, dacă da, adun valoarea 1 la maximul tuturor coloanelor de mai sus.

Dacă nu este task, scrie orice altceva fac concatenare cu & cu numărul maxim de mai sus, semnul „.” și rezultatul numărării (COUNTA) a celulelor de pe blocul dinamic de mai sus, format din adresa celulei in care se află valoarea maximă de până acum ADDRESS(MATCH(MAX($A$2:A2);$A$2:A2;0)+1;1) cu adresa celulei de mai sus de poziția curentă (ADDRESS(ROW()-1). Ca să pot face COUNTA() folosesc funcția INDIRECT() pentru a compune dinamic blocul de celule de căutare.

Avantajul este că funcționează și la mai mult de 10 task-uri și mai mult de 10 subtask-uri.

Dezavantajul este la sortare unde apare eroare dacă faci sortare după coloana de numere curente, sau coloana de activități.

Soluția este funcțională și în Foi de calcul Google, cu mențiunea că având un format regional diferit a trebuit să mai adaug un punct la finalul formulei ca să nu apară rezultatul de tip dată calendaristică.

Rezultatul formulei din Google.

 

Soluție Aurora

Mă refer la un prenume nu la un cod de soluție. :)

Aurora o fostă studentă de pe la începutul mileniului acesta, mi-a trimis prima soluție.

Formula ei din A3 este:

=IF(LEFT(B3;3)=”Sub”;IF(ISERROR(FIND(„.”;A2));A2&”.1″;LEFT(A2;FIND(„.”;A2))&(VALUE(RIGHT(A2;LEN(A2)-FIND(„.”;A2)))+1));IF(ISERROR(FIND(„.”;A2));A2+1;VALUE(LEFT(A2;FIND(„.”;A2)-1))+1))

Soluția propune folosirea repetitivă a funcțiilor FIND(), LEFT() și RIGHT() cu adunări de numere consecutive. Testat 100% funcțional la valori de peste 10 task-uri și subtask-uri.

Dezavantajul modelului este că dacă un subtask nu începe cu valoarea Sub, atunci nu mai merge formula.

Soluție Adrian B

Soluția lui Adrian folosește o paletă mai variată de funcții, dar rezultatul este identic cu soluțiile de mai sus.

=IF(B3<>””;IF(LEFT($B3;4)=”Task”;MAX($A$2:$A2)+1;IF(NOT(ISERROR(FIND(„.”;A2)));MID(A2;1;FIND(„.”;A2)-1)&”.”&MID(A2;FIND(„.”;A2)+1;LEN(A2)-FIND(„.”;A2))+1;A2&”.1″));””)

Formula este testată pentru mai mult de 10 task-uri și subtasuri. De asemenea, poate funcționa și pentru subtask-uri care nu au aceasta etichetă.

 

Soluție Alexandru N

Alexandru a trimis o soluție la fel de funcțională ca și celelalte doar că folosește altă abordare și altă combinație de formule. Îmi place la formula lui Alexandru faptul că are o complexitate mai redusă și poate fi mai ușor de înțeles și replicat. Asta dacă reușiți să vă „adaptați” la SUMPRODUCT().

=(IF(LEFT(B3;4)=”Task”;SUMPRODUCT((LEFT($B$2:B3;4)=”Task”)*1);SUMPRODUCT((LEFT($B$2:B3;4)=”Task”)*1)&”.”&IFERROR(RIGHT(A2;LEN(A2)-FIND(„.”;A2;1));0)+1))

Formula testată și funcțională.

 

Soluție Ciprian S

Ciprian, un vechi prieten al acestui gen de probleme și care a venit permanent cu soluții surprinzătoare, a trimis o soluție foarte interesantă ca primă versiune:

=IF(LEFT(B2;4)=”Task”; FLOOR.MATH(SUM(A1))+1; SUM(A1)+0,1)

Formula se scrie în B2 și funcționează pentru versiunile peste 10 task-uri dar cu maxim 9 task-uri.

Formula este testată și funcționează și în Google Sheets.

Pentru versiunea cu peste 10 subtaskuri Ciprian a folosit o variantă asemănătoare cu cele de mai sus:

Formula din A2:

=IF(LEFT(B2;4)=”task”;TEXT(IFERROR(VALUE(LEFT(A1;(FIND(„.”;A1)-1)))+1;IFERROR(VALUE(A1);0)+1);”0″);IFERROR(LEFT(A1;(FIND(„.”;A1)));A1&”.”)&IFERROR(MID(A1;(FIND(„.”;A1)+1);100);0)+1)

Este o abordare mult mai corectă decât cea prezentată în soluția mea, pentru că începe cu calculul fix din prima celulă de date (A2) și nu doar din celula A3.

 

O soluție cu VBA

Pentru cei care mă cunosc știu că nu sunt adeptul VBA. Totuși soluția este foarte interesantă și merită exploatată.

În principiu se creează o funcție în VBA cu Range.IndentLevel. Mai multe detalii puteți consulta aici: https://professor-excel.com/how-to-return-the-indentation-of-a-cell-in-excel/

 

Frumusețea acestei probleme este diversitatea soluțiilor și combinațiilor de formule plus ingeniozitatea oamenilor în a le combina în vederea obținerii rezultatelor asemănătoare. Mulțumesc frumos și ținem legătura! :)

Sper să fie util cuiva.

 

Apel la implicare. Imprimante 3D și materiale pentru echipamente de protecție personală

Acest articol este o solicitare de implicare a tuturor oamenilor care dețin acasă o imprimantă 3D, eventual companiilor care doresc să imprime, sau a persoanelor care doresc să ajute prin achiziționarea de materiale pentru imprimantele 3D.

Rugăm toți posesorii de imprimante 3D care doresc să se implice în realizarea echipamentelor de protecție individuală, să se înscrie în grupul Facebook dedicat acestei inițiative, la adresa: https://www.facebook.com/groups/558125544833509/. Toți cei interesați vor primi codul sursă pentru măștile de protecție și suportul de vizieră.

Pentru cei care nu au imprimante 3D, dar doresc să ajute cu materiale, necesarul la ora actuală (pentru două imprimante existente) este de:

  • FILAMENT > TIP FILAMENT PETG/PLA > DIAMETRU FILAMENT 1.75 MM – Poate fi achiziționat de aici.
  • Folii laminare, A4, 250 microni, 100 buc/set – Poate fi achiziționat de aici.

Pentru codul sursă de imprimare și/sau livrarea materialelor vă rugăm să luați legătura cu Adrian Carlan la adresa de eMail: adrian.carlan@gmail.com sau WhatsApp: 0749418546

În continuarea articolului vă punem la dispoziție propunerea de fișă tehnică. (Această fișă este realizată de Adrian Carlan).

Introducere

Având în vedere situația actuală a pandemiei cu virusul SARS-COV-2, este obligatoriu să se asigure protecția cadrelor medicale și a personalului din linia întâi din lupta contra pandemiei.

Problema cea mare este criza echipamentelor de protecție omologate pentru prevenția infectării cu acest virus, precum: măștile respiratorii, ochelarii de protecție, scuturile faciale, halate, mănuși, combinezoane etc.

De asemenea, majoritatea acestor echipamente sunt de unică folosință și trebuie înlocuite foarte des pe parcursul unei ture.

Comunitatea de DIY si 3D Printing poate veni în ajutor și să suplimenteze, la nevoie, cu echipamente create local si distribuite acolo unde este cea mai mare nevoie. Acest lucru se întâmplă deja în alte țări precum Italia, Spania, Cehia, Franța etc.

Disclaimer:

Aceste echipamente propuse nu sunt omologate de către autoritățile competente spre a fi folosite de către cadrele medicale. Ele ar trebui folosite doar în ultima instanță, în lipsa oricăror altor echipamente omologate oficial!

Nu ne asumăm nici o răspundere în cazul utilizării improprii a acestor echipamente. Prin utilizarea acestor echipamente, persoana care le utilizează este conștientă de riscuri si își asuma toata răspunderea.

Nu se dorește a se crea un sentiment fals de siguranță!

Semi-mască de Protecție Respiratorie Reutilizabilă

Echipament destinat protecției respiratorii prin prevenirea infectării pe cale aeriană cu diverși viruși sau bacterii.

Date tehnice:

  • Părțile sunt realizate la imprimanta 3D
  • Oferă un sigiliu etanș in jurul cailor respiratorii
  • Doua nivele de filtrare: accepta doua medii de filtrare diferite cu diametrul de 62mm
  • Închidere ermetica prin înșurubare a filtrului
  • Prindere a măștii in 2 puncte cu banda elastica
  • Reutilizabil – se poate steriliza cu soluție 70% alcool izopropilic / etilic sau alte soluții dezinfectante sau biocide (ex. pe baza de clor, etc).
  • Atentie: Nu suporta sterilizare termica (autoclava)
  • Materialul folosit: poliester termo-plastic PLA (acid poli-lactic) . Riscuri minime de alergii la contactul îndelungat cu pielea
  • Greutate: 60g

Pentru eficientă maxima, se recomanda folosirea mediilor de filtrare de tipul N95, P100 sau FFP2, FFP3.

În lipsa acestor medii, si numai in cazuri extreme, se pot folosi doua pad-uri (tampoane) din bumbac – de exemplu discurile demachiante. Aceste discuri trebuie tăiate la diametru de 62mm conform șablonului monturii filtrului.

Acest dispozitiv se folosește cu scopul de a preveni infectarea pe baza de aerosoli (particule sau picături suspendate in aer) de dimensiune relativ mare, intre 5μm si 20μm ce nu pot fi eficient filtrate de măștile chirurgicale generice (ne-etanșe pe faţă).

Pentru a obține gradul optim de etanșeitate şi un contact cât mai bun cu pielea, bărbații ce folosesc acest dispozitiv nu trebuie sa poarte barba!

Atenție: folosirea altor filtre decât cele omologate de tipul N95, P100, FFP2, FFP3 nu vor asigura același grad de filtrare!

Scutul Facial

Echipament de protecție suplimentara a persoanelor ce intra in contact cu bolnavii de COVID-19, folosit împreună cu măștile respiratorii dar şi a ochelarilor de protecție.

Se poate refolosi in urma sterilizării cu soluție 70% alcool izopropilic / etilic sau alte soluții dezinfectante sau biocide (ex. pe baza de clor, etc).

Scutul transparent este din material plastic laminat (pe baza de acetat). Are dimensiunea de 21 x 30cm (A4) și grosimea de 250μm. Este rezistent la apa si alte lichide si ușor de curățat.

Masca se poate dezasambla, iar scutul transparent se poate schimba (de ex. in cazul in care se deformează sau distruge).

Design „Open Source” creat originar de către o echipa din Cehia sub îndrumarea ministerului de sănătate Ceh. In prezent este testat cu succes in spitalele din Cehia dar si din întreaga lume.

 

Note de final

Adrian Cârlan este absolvent al Universității Tehnice Gheorghe Asachi din Iași premiat de NASA, pentru proiectul ArachnoBeeA. Un interviu cu el poate fi vizionat aici.

Mulțumesc frumos tuturor celor care doresc să se implice sau care trimit mai departe articolul pentru a ajunge la cei care pot ajuta!

Update

Primele măști de protecție sunt deja produse (pe stoc a fost doar filament de culoare neagră) Foto: Adrian Cârlan.

Filtrul

Filtru de poliție.

  • Bună ziua, agent Ixulescu, unde vă deplasați în dimineața aceasta?
  • La serviciu!
  • Da? Ce sunteți?

    În mintea mea a apărut un semn al exclamării din trecut: Nu minți Valerică, îmi spuneau părinții. Zic cum să fac să scap fără să mint…

  • Știți, sunt doctor.

    Se luminează la față și plin de o emoție sinceră:

  • Ooo! Să trăiți! Eroii în alb! Treceți vă rog!

    Dau să închid geamul… când sare celălalt agent.

  • Bună ziua domnu’ doctor, scuzați-mă că rețin, ce specialitate sunteți?

    Offf, iar trecutul. În mintea mea îmi venea să-i spun că sunt … ceva care are legătură cu mama lui… dar, na Valerică nu minți!

  • Păi știți, sunt doctor în informatică!
  • Aaa, spuse el rânjind satisfăcut, ahaam, informatică spui, aaactele la controool și aaamendă…

    Actele… unde mi-or fi actele. M-am albăstrit în gând… Actele… unde îmi sunt actele?

    Ixulescu cu o față dezamăgită:

  • Deci sunteți doctor așa ca Ponta?!

    Mi s-a urcat sângele în cap. Mă dau jos din mașină, pufnind, ca să pot să-mi scot portofelul din buzunar. Și scotocindu-mă:

  • Nu vă supărați, am muncit 9-10 ani de zile pentru acel doctorat, și chiar dacă nu am mutat munții din loc, am avut ocazia de a citi metri de cărți, de învăța și a lucra cu cei mai faini oameni ai lumii acestea, de a ajunge unul din … și nu mai știu ce am mai spus că mi-am găsit actele.

    Celălalt văzându-mă vădit afectat de comparația cu Ponta:

  • Și dumneavoastră ca doctor de calculatoare vă ocupați… așa de viruși, de astea?
  • Da domnule și de astea, dar când apar, nu tot timpul.
  • Aham. Și poate să apară așa și o epidemie … așa cum e asta de viruși da la calculatoare?
  • Da domnule poate apărea la fel, sau chiar mai rău… și dacă apare o chestie de asta și nu avem grijă cu toții o să stăm la izolare și fără comunicare.

    Părând dintr-o dat că a înțeles dar și oarecum panicat.

  • Ixulescule, adu actele domnului doctor că tre să meargă repede la serviciu că poate are treabă.

    Vine panicat:

  • S-a întâmplat ceva?
  • Domnu doctor trebuie să plece repede!
  • Aaa mă scuzați. Uitați aici actele, chestia asta e amenda, o plătiți dumneavoastră când puteți, și mergeți sănătos, ăăă , mergeți repede la serviciu!

    Mă uit și eu la ei… îmi iau actele… dau binețe, urc în mașină. Ixulescu:

  • Chiar era doctor mă?

O fi acesta un pamflet, dar morala este că ar trebui fiecare să aveți mai multă grijă de propriile calculatoare. Mai ales în aceste vremuri când stați mai mult pe acasă și vă vin tot felul de gânduri XYZ, vreți să vă uitați la multe filme, să descărcați jocuri piratate… „Inamicii” de peste tot, abia așteaptă să capete ceva putere de minare suplimentară din calculatoarele voastre.

Stay safe! Pune-ți antivirus, verifică-ți firewall-ul! Nu intra pe site-uri obscure!

Blog la WordPress.com.

SUS ↑