Der allgemeine schlaue excel-Fragen Thread

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Moin,

      ich bastel gerade was und checke nicht, wo mein Fehler ist. Ist eigentlich Kleinscheiß, aber klappt nicht :D
      Hab eine Tabelle, die diverse geleistete Stunden aus verschiedenen Ecken zählt; in einem Feld kommt dann eine Stundenzahl im Format bzw. Formatierung "[h]mm;@" raus, die ich durch eine natürliche Zahl teilen will und die dann eine Zahl ergeben soll.
      Konkret:
      562:04 (Stunden bzw. Minuten) / 176 (8h*22 Arbeitstage) soll zu 3,19 FTE werden (gerundet)

      Gibt es was eleganteres, als über die Tabelle die Sachen in Minuten umzuwandeln?
      we do not sow
    • Hallo Leute,

      ich habe ein Problem und mein Kopf ist verknotet.
      Ich habe eine Liste mit 200 Datenpunkten, die verschiedene Merkmale aufweisen können.

      Sollte ein Datenpunkt eine explizite Eigenschaft aufweisen, soll der komplett aus der Liste verschwinden.

      Beispiel:


      Person 1 A
      Person 1 A
      Person 1 A
      Person 2 A
      Person 2 A
      Person 2 B



      Person 1 ist fine, weil die nur die Eigenschaft A aufweist.
      Person 2 soll gelöscht werden, sobald sie etwas anderes als A aufweist, und fliegt hier entsprechend raus, weil sie nach diversen positiven Treffern auch B aufweist.


      Hat jemand einen Lösungsansatz parat? Ich habe mich schon zu tode s-verwiesen und ver-IF't aber komme auf keinen grünen Zweig.


      HumanlyPuma schrieb:

      junge leg dir ne hantel ins büro oder geh kegeln
    • In VBA wärs easy, ohne: Hilfstabelle goes brrrr

      A4 bis C4 ist deine Ursprungstabelle, in Spalte C ist dein Wert "A")
      mach ne zweite Tabelle
      mach dir da ein =WENN(C4="A";4:4;"")
      Das kopiert dir die Tabelle, wenn A vorhanden ist, ansonsten kopiert es nicht. Danach dann alles runterziehen. Danach sortieren (damit die leeren Zellen unten sind) und das dann als Werte kopieren und damit weiterarbeiten.
      Byron - Attributmagier
      Der Korpothread

      Oster schrieb:

      Wenigstens shrodo denkt mit.





      "some games just feel so unthrowable until you suddenly lost"
    • Dann hat er ja trotzdem noch Person 2 in der Liste, oder?

      Meine Idee wäre nach B Filtern (oder allem was nicht A ist), das in eine Zweite Tabelle packen. Dann hast Du alle Namen, die aus der ursprünglichen Tabelle raus müssen.

      Im Anschluss sverweis, um die zu löschenden Namen in der ursprünglichen Tabelle zu mappen.

      Oder du kannst doppelte Werte entfernen, wenn du nicht drei Einträge Person 1 / A brauchst, und anschließend alle noch immer doppelt vorkommende Namen markieren und dann löschen.

    • Würde auch erstmal manuell filtern auf alle Einträge, die nicht "A" enthalten. Dann alle Personen in eine zweite Tabelle (Sheet "Filter") kopieren:


      Person 2



      In der ersten Tabelle eine Spalte hinzufügen und folgenden Text einfügen:
      =IF(COUNTIF(Filter!A:A,Sheet1!A2)>0,"hide","not found")
      Dann kannst du in der neuen Spalte "hide" rausfiltern und hast nur noch Einträge mit "A"

      pers atr columnHide
      Person 1 A not found
      Person 1 A not found
      Person 1 A not found
      Person 2 A hide
      Person 2 A hide
      Person 2 B hide




      Spoiler anzeigen
      Gibt sicher eine bessere Lösung, aber komme grade nicht drauf
    • Post 1/2 da zulang:

      Ich würde das eher Automatisieren mit einem Script.

      Vorher:


      Nachher:


      Script:

      JavaScript-Quellcode

      1. function main(workbook: ExcelScript.Workbook) {
      2. let eigenschaft = "A";
      3. let tableName = "Table1";
      4. var tableColumnPersonId = 0;
      5. var tableColumnEigenschaftId = 1;
      6. let table = workbook.getActiveWorksheet().getTable(tableName);
      7. //gets the table range between the header and total
      8. let tableRange = table.getRangeBetweenHeaderAndTotal();
      9. //gets the table values
      10. let tableValues = tableRange.getValues();
      11. //gets the number of rows and columns
      12. let tableRows = table.getRowCount();
      13. let personsToDelete = [""];
      14. for (var i = 0; i < tableRows; i++)
      15. {
      16. if (tableValues[i][tableColumnEigenschaftId] != eigenschaft)
      17. {
      18. personsToDelete.push(tableValues[i][tableColumnPersonId] as string);
      19. }
      20. }
      21. let rowsToDelete = [-1];
      22. for (var l = 0; l < tableRows; l++)
      23. {
      24. if (personsToDelete.includes(tableValues[l][tableColumnPersonId] as string))
      25. {
      26. rowsToDelete.push(l)
      27. }
      28. }
      29. rowsToDelete = rowsToDelete.reverse();
      30. for(var k = 0; k < rowsToDelete.length; k++)
      31. {
      32. if(rowsToDelete[k] >= 0){
      33. table.deleteRowsAt(rowsToDelete[k]);
      34. }
      35. }
      36. }
      Alles anzeigen
    • Post 2/2 da zu lang:

      Ist nicht das optimalste, ist auch erst mein Zweiter Versuch mit ExcelScript.
      Du findest das Oben in der Zeile "Automate", dann new Script, Code reinkopieren, Parameter anpassen, Run drücken. Hoffen. (Vorher Backup machen von der Datei)



      Folgende Parameter sind anzupassen im Skript:
      Zeile 3: Eigenschaft nach der gefiltert werden soll (zum behalten)
      Zeile 4: Name der Tabelle
      Zeile 5: Spaltenindex der PersonenSpalte (beginnt von links nach rechts mit 0)
      Zeile 5: Spaltenindex der EigenschaftSpalte (beginnt von links nach rechts mit 0)

      Es werden alle Personen gelöscht, die mindestens einmal nicht "A" aufweisen.

      Hope that helps.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von HappyTiger ()

    • ardet4 schrieb:

      HappyTiger schrieb:

      ardet4 schrieb:

      Daten vernünftig strukturieren (eine Zeile je Person, nicht je Person und Eigenschaft), Duplikate entfernen, Profit.
      Du weißt ja nicht wie die Daten zustande kommen und woher. Zudem bringt Duplikate entfernen hier nichts. ^^
      Ja wenn die Daten so zustande kommen darf man die natürlich nicht sinnvoll strukturieren :ugly:
      Geht mir eher darum, dass das auch Aufwand ist und ja auch einer Lösung bedarf. Und ich davon ausgehe, dass er öfter diesen Fall haben wird, wenn man da vorher immer umstrukturieren muss, geht das natürlich auch mit entsprechenden Aufwand. :)
      Fraglich ob dein Vorschlag aber noch den zweck der Daten erfüllt, wir kennen den Kontext ja nicht. Mal abgesehen davon, dass "Duplikate entfernen" wie gesagt an der Aufgabe vorbeigeht. :D

      War auch nicht böse gemeint. <3
    • duplicates filtern actually der beste Ansatz für einfache Lösung, weil du dann einfach counten kannst welche Person mehrmals vorkommt

      (außer es ist relevant, dass eine Person mit mehreren Einträgen auch mehrmals vorhanden ist)
    • Das (mein) Problem ist wie folgt:
      1. Ich habe die Daten in einem nativen Format; die Lösung sollte dafür passen
      2. Meine Lösung soll nicht nur für mich sein, sondern auch für andere nachvollziehbar (und reproduzierbar)

      Entsprechend sind zuviele individuelle Formatanpassungen scheiße.

      Ich habs mit einem Script probiert, leider zeigte sich, dass die Daten bzw. Eigenschaften vom "Eingebenden" nicht immer korrekt geschrieben wird. So wird aus "meter" mal "meterr" (oder so).

      Ergo habe ich jetzt einen Mix aus diversen Vorschlägen gebastelt.
      Zuerst Suche ich alle Personen, die das Merkmal "B" aufweisen (per Filter) und kopiere sie in eine extra Tabelle. Dann suche ich per Verweis nochmal für alle Personen, ob sie in der Liste sind - wenn nicht, haben sie zwangsläufig nur das Merkmal A.

      Ist leider nicht so, wie ich es gerne gehabt hätte, aber so verstehen es eben auch die anderen und können es adaptieren.


      HumanlyPuma schrieb:

      junge leg dir ne hantel ins büro oder geh kegeln