„Excel“ - suraskite maksimalią vertę kas 10 eilučių ir pažymėkite eilutę

Problema

Reikia pagalbos kuriant „Excel“ formulę, kad nustatytumėte aukščiausias ir mažiausias reikšmes Kas 10 eilučių Tada Nustatykite šias dvi eilutes, įdėdami tam tikrą tekstą ar numerį tuščioje stulpelyje eilutėse, kuriose yra didžiausios ir mažiausios vertės. Pavyzdžiui, aš noriu grąžinti žodį A3 stulpelyje TIK VIENAI aukščiausia ir mažiausia prekybos kaina už kiekvieną 10 eilių įpjovimą. Tokiu būdu galiu rūšiuoti duomenis pagal „Keep“ ir ištrinti kitas 8 duomenų eilutes. Tokiu būdu galiu išlaikyti didžiąją dalį mano duomenų vientisumo ir labai sumažinti failo dydį.

Naudoju „Excel 2007“ ir turiu 160 000 duomenų eilutes. Šios formulės tikslas - sumažinti šiuos duomenis iki 80%

Žemiau pateikta skaičiuoklė yra paprastas pavyzdys.

 Prekybos laikas Kaina C yra tuščias stulpelis formulės išrašymui ___________A____________B_____________C 1 eilutė 19:30:25 121.81 2 eilutė 19:30:26 121.80 Išlaikyti eilutę 3 19:30:29 121.83 Eilutė 4 19:30:31 121.86 Išsaugoti eilutę 5 19 : 39: 35 121, 84 

Bet kokia pagalba būtų labai vertinama.

Sprendimas

Yra 3 makrokomandos „test“, „test1“ ir „anuliuoti“. Testas1 yra įterptas į „testą“, todėl pakanka, kad atliktumėte tik makro „testą“.

Visi trys makrokomandos turėtų būti modulyje. Makro „anuliuoti“ panaikina makro rezultatus.

Paimkite mažą duomenų ištrauką apie 31 eilutę ir patikrinkite makrokomandą. Jei rezultatai yra gerai, makrokomandas galite naudoti originaliame faile

LAIKYTI ORIGINALĄ RŪŠĮ SAUGAI, KAD JŲ GALI ATSIŽVELGTI.

Makro 1:

 Dim r Kaip diapazonas, r1 Kaip diapazonas, x kaip dvigubas, y kaip dvigubas Dim j kaip vientisas, k kaip bendras matmuo r2 kaip diapazonas, m kaip vientisas sub testas () darbalapiai ("lapas1"). = "signalas" Nustatyti r2 = intervalas (intervalas ("B1"), diapazonas ("B1"). Pabaiga (xlDown)) j = 1 m = 1 Ar rinkinys r = ląstelės (j * m + 1, "B") MsgBox r.Adress Set r1 = Range (r, r.Offset (9, 0)) MsgBox r1.Address Jei r.Offset (9, 0) = "" Tada Exit Do x = WorksheetFunction.Min (r1) y = WorksheetFunction .Max (r1) MsgBox x MsgBox yk = WorksheetFunction.Match (x, r2, 0) Ląstelės (k, "c") = "išlaikyti" k = WorksheetFunction.Match (y, r2, 0) Ląstelės (k, c) ") =" keep "m = m + 10 MsgBox m Loop test1 End Sub 

„Macro 2“:

 Sub test1 () darbalapiai ("sheet1") Aktyvinti rinkinį r = Range (intervalas ("A1"), diapazonas ("A1"). Pabaiga (xlDown) .Offset (0, 3)) r.AutoFilter laukas: = 3, Kriterijai1: = "išlaikyti" r.Cells.SpecialCells (xlCellTypeVisible) .Kopuoti darbalapius ("lapas2"). Diapazonas ("A2") ActiveSheet.AutoFilterMode = False End Sub 

„Macro 3“:

 Sub undo () darbalapiai ("sheet1"). Range ("c1"). EntireColumn.Delete Worksheets ("sheet2"). 

Pastaba

Ačiū venkat1926 už šį patarimą forume.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai