Trick # 73

V-ați întâlnit vreodată cu numere negative importate, semnul minus al cărora a fost în dreapta? SAP este unul dintre programele care fac acest lucru cu numere negative: de exemplu, 200 în loc de -200. Modificarea manuală a formatului este o sarcină foarte plictisitoare, dar nu este necesar să o faceți manual.

Să presupunem că există o listă lungă de numere doar importate dintr-un alt program, iar unele dintre acestea sunt așa numitele numere negative. Sarcina ta este să le transformi în numere reale negative pe care Excel le poate recunoaște. În acest exercițiu, vom folosi intervalul A1: A100. În celula B1, introduceți următoarea formulă:
= SUBSTITUT (IF (DREAPTA (TRIM (A1)) = "-" DREAPTA (TRIM (A1)) A1, A1) "-" "" 2) +0. în versiunea rusă a Excel = SUBSTITUT (IF (DREAPTA (TRIM (A1)) = "-" DREAPTA (TRIM (A1)) A1, A1), "-", "", 2) 0.

Introduceți-l în mai multe celule din această coloană cu datele din coloana A1, apoi copiați formulele introduse și selectați coloana A1. Selectați comanda Lipire speciale → Valori pentru a șterge formula și lăsați doar valorile. În Fig. 6.16 arată modul în care lista sa uitat înainte de aplicarea formulei (interval A1: A7) și după.

Trick # 73

Fig. 6.16. Înainte și după mutarea semnului minus

Pentru a înțelege modul în care funcționează această formulă, introduceți următoarea formulă în orice celulă. Celula A1 trebuie să conțină valoarea 200-: = DREAPTA (TRIM (A1); 1) A1. în versiunea rusă a Excel = RIGHT (INSERTS (A1); 1) A1. Veți obține rezultatul -200-.

Funcția TRIM asigură pur și simplu că nu există caractere spațiale în celulă. După ce ați primit valoarea -200-, este necesar să eliminați a doua apariție a semnului minus. Aceasta se face prin funcția SUBSTITUTE. Ați ordonat-o să înlocuiască a doua apariție a simbolului - cu "" (textul gol). Ca rezultat, o valoare de text este returnată, deci pur și simplu adăugați 0 la ea, iar Excel convertește această valoare într-un număr.

Dacă trebuie să efectuați frecvent această lucrare, trebuie să scrieți o macrocomandă specială care să o simplifice. Iată cum să faceți acest lucru. Macrocomanda a fost optimizată pentru a asigura viteza maximă de execuție.

// Listarea 6.2 ConvertMirrorNegatives Sub () Dim rCell Ca Gama Dim rRange Ca Gama Dim lCount Atâta timp Dim lLoop Ca lung // Asigurați-vă că datele este evidențiat; dacă nu este, trimiteți mesajul _ și terminați macroul. Dacă Selection.Cells.Count = 1 Apoi, MsgBox "Selectați intervalul de conversie", vbInformation Exit Sub End If // Se determină valorile de tip text variabile numai pentru, de exemplu 200- On Error CV Următorul set rRange = Selection.SpecialCells (xlCellTypeConstants, xlTextValues) / / Dacă variabila nu returneaza nimic, numere incorecte negativ acolo: // mesaj de afișare și a ieși din macro Dacă rRange este nimic Apoi, MsgBox „Oglinda de numere negative nu au“, vblnformation On Error GoTo 0 Exit Sub End If // Calculați cât de multe celule conțin un fel de valori 200 - și treceți acest număr / // la variabila pentru a controla numărul de buclă. lCount = Foaie de lucruFunction.CountIfCSelecție. „* -.“) // Setați variabila la prima celulă a domeniului selectat Set rCell = Selection.Cells (1 1) // Execută bucla cât de multe ori ca numere negative incorecte pentru lLoop = 1 Că iCount // La fiecare trecere prin bucla pentru a seta variabila o celulă care conține * - // pinionului - un șablon set de simboluri rCell = rRange.Find (Ce: = "* -" După :. = rCell _ Lookin`: = xlValues, lookat: = xlPart _ SearchOrder: = xlByRows ... SearchDirection: = _ xlNext MatchCase :. = false) // utilizează în mod standard înlocuiți pentru a înlocui semnul "minus" // textul gol. Cu alte cuvinte, ștergeți rCell.Replace What: = "-". Înlocuire: = "" // Înmulțiți celula la -1, să se transforme într-un număr negativ rCell = rCell * -1 Următoarea lLoop On Error GoTo 0 End Sub

Articole similare