Advertisement
Guest User

Finding non-empty cells in a range not including formulas

a guest
Dec 21st, 2020
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. Function GetRangeWithValue(oSheet)
  2. '''' Die Funktionen zum ermitteln der letzten Zelle finden nur die erste Zelle die wirklich leer ist (UsedRange)
  3. '''' Ich will aber die letzte Zelle deren Inhalt nicht "" ist. Weil da z.B eine Formel drinsteht:
  4. '''' =WENN(ISTZAHL(C63);LOG(2)/LOG(M63);"")
  5. '''' Diese funktion hier schreibt zuerst eine Formel in die Zelle rowCountCell: =count(B5:B369) *deutsch: anzahl...
  6. '''' liest dann den Wert aus und erstellt damit die Formel für die Zelle colCountCell: =count(B59:AV59) (wenn der Wert 59 ist)
  7. '''' Dieser Wert wird dann auch ausgelesen (z.B: 15 ist Spalte 'P') und nun wird daraus eine Rangeangabe gemacht:
  8. '''' sRange="A1:" & chr(64+iCountCols+1)&iCountRows
  9. '''' A1 Von links Oben
  10. '''' chr(64+iCountCols+1) der ASCII Code von A = 64 plus das Ergebnis aus iCountCols (= 64 + 15 = P)
  11. '''' iCountRows Anzahl der Zeilen in denen das Ergebnis <> "" ist
  12. '''' Ergebnis: Range z.B. für den Druckbereich
  13. '
  14. '''' Hinweis: Formelnamen müssen englisch sein: <http://www.ooowiki.de/DeutschEnglischCalcFunktionen(2f)Statistik.html>
  15. ' Dim oSheet As object
  16. dim rowCountCell$
  17. dim colCountCell$
  18. dim firstDataRow as Integer
  19. Dim lastDataRow As integer
  20. Dim topLeft$,firstDataColumn$
  21. Dim iCountRows As Integer
  22. Dim iCountCols As integer
  23. Dim sRange$
  24. '''' Bereiche definieren
  25. topLeft="A1"
  26. colCountCell="Z2" 'Zelle in die die zweite Formel eingetragen wird
  27. rowCountCell="Z1" 'Zelle in die die erste Formel eingetragen wird
  28. firstDataColumn="B" ' Linke Spalte des Datenbereichs
  29. firstDataRow="5" '1. Zeile des Datenbereichs (Ohne Spaltenüberschrift)
  30. lastDataRow="369" 'Letze Zeile des Datenbereichs kann auch 104876 sein :)
  31. ' oSheet = ThisComponent.sheets.getByName("Daten") ' Tabelle
  32. '''' 1. Formel eintragen
  33. oSheet.getCellRangeByName(rowCountCell).formula="=count("_
  34. & firstDataColumn _
  35. & firstDataRow _
  36. & ":" _
  37. & firstDataColumn _
  38. & lastDataRow _
  39. & ")"
  40. '''' Wert für Anzahl der Zeilen holen
  41. iCountRows=oSheet.getCellRangeByName(rowCountCell).value+firstDataRow-1
  42. '''' 2.Formel eintragen
  43. oSheet.getCellRangeByName(colCountCell).formula="=count(" _
  44. & firstDataColumn _
  45. & iCountRows _
  46. & ":AV" _
  47. & iCountRows &")"
  48. '''' Wert für Anzahl der Spalten holen
  49. iCountCols=oSheet.getCellRangeByName(colCountCell).value
  50. '''' String für Range erstellen
  51. sRange=topLeft _
  52. & ":" _
  53. & chr(64+iCountCols+1) _
  54. & iCountRows
  55. 'msgbox "Range =" & sRange
  56. '''' FormelZellen wieder leeren
  57. oSheet.getCellRangeByName(rowCountCell).formula=""
  58. oSheet.getCellRangeByName(colCountCell).formula=""
  59. GetRangeWithValue=sRange
  60. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement