Ερώτημα ενέργειας: Χρήση άλλου εάν ρήτρες σε στήλες υπό όρους - Συμβουλές για το Excel

Πίνακας περιεχομένων

Σημείωση

Αυτό είναι ένα από μια σειρά άρθρων που περιγράφουν λεπτομερώς τις λύσεις που αποστέλλονται για την πρόκληση Podcast 2316.

Στη λύση μου για την αναμόρφωση των δεδομένων, ήθελα έναν τρόπο να δω αν μια στήλη περιείχε ένα όνομα υπαλλήλου ή μια τιμή όπως Q1, Q2, Q3, Q4. Στη λύση μου, υποθέτω ότι κανείς δεν θα έχει όνομα με 2 χαρακτήρες, και έτσι πρόσθεσα μια στήλη για να υπολογίσω το μήκος του κειμένου στη στήλη.

Ο Jason M απέφυγε την ανάγκη για τη στήλη Μήκος προσθέτοντας τρεις ρήτρες Else If στη στήλη υπό όρους.

Προσθήκη στήλης υπό όρους

Ο υπό όρους υπολογισμός για τον υπάλληλο ψάχνει τότε το τρίμηνο να είναι μηδέν: εάν (τρίμηνο) = μηδέν τότε (περιγραφή κατηγορίας) άλλο μηδέν.

Υπολογισμός υπό όρους

Εδώ είναι ο κωδικός M του Jason:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Transposed Table" = Table.Transpose(Source), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Added Conditional Column" = Table.AddColumn(#"Promoted Headers", "Quarter", each if (Category Description) = "Q1" then (Category Description) else if (Category Description) = "Q2" then (Category Description) else if (Category Description) = "Q3" then (Category Description) else if (Category Description) = "Q4" then (Category Description) else null), #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "Employee", each if (Quarter) = null then (Category Description) else null), #"Filled Up" = Table.FillUp(#"Added Conditional Column1",("Quarter")), #"Filled Down" = Table.FillDown(#"Filled Up",("Employee")), #"Inserted Distinct Count" = Table.AddColumn(#"Filled Down", "Distinct Count", each List.NonNullCount(List.Distinct(((Category Description), (Employee)))), Int64.Type), #"Filtered Rows1" = Table.SelectRows(#"Inserted Distinct Count", each (Distinct Count) 1), #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1",("Distinct Count")), #"Removed Columns" = Table.RemoveColumns(#"Removed Columns1",("Category Description")), #"Filtered Rows" = Table.SelectRows(#"Removed Columns", each ((Employee) "Dept. Total")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Filtered Rows", ("Quarter", "Employee"), "Attribute", "Value"), #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",(("Attribute", "Category Description"))), #"Pivoted Column" = Table.Pivot(#"Renamed Columns", List.Distinct(#"Renamed Columns"(Quarter)), "Quarter", "Value"), #"Inserted Sum" = Table.AddColumn(#"Pivoted Column", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), type number), #"Reordered Columns" = Table.ReorderColumns(#"Inserted Sum",("Category Description", "Employee", "Q1", "Q2", "Q3", "Q4", "Total")) in #"Reordered Columns"

Ο Ondřej Malinský έστειλε μια λύση που χρησιμοποίησε πολλαπλές ρήτρες Else If:

Πολλαπλά άλλα-αν

Ο Matthew Wykle έστειλε μια λύση με έναν ακόμη τρόπο για να προσδιορίσει τα τέταρτα. Η μέθοδος του ελέγχει ότι το κείμενο ξεκινά με Q και το δεύτερο ψηφίο είναι μικρότερο από 5:

if Text.Start((Attribute),1)="Q" and Number.From(Text.Middle((Attribute),1,1))<5 then Text.Start((Attribute),2) else "Total")

Προσδιορίστε τα τέταρτα

Ο Christian Neuberger χρησιμοποίησε αυτόν τον τύπο για να πάρει το όνομα υπαλλήλου, να συμπληρώσει και στη συνέχεια να φιλτράρει τη στήλη 1 για να συμπεριλάβει μόνο Q1, Q2, Q3 ή Q4. Η Oz Du Soleil χρησιμοποίησε επίσης αυτήν τη μέθοδο

Φιλτραρισμένη στήλη

Το Excel MVP Ken Puls κερδίζει πιθανώς με τον τύπο του. Ψάχνει μια υπογράμμιση για να μάθει αν αυτό δεν είναι το όνομα του υπαλλήλου.

Δείτε την πλήρη λύση του Ken στα Excel MVPs Attack the Data Cleansing Problem στο Power Query.

Ψάχνετε για μια υπογράμμιση

Επιστρέψτε στην κύρια σελίδα για την πρόκληση Podcast 2316.

Διαβάστε το επόμενο άρθρο σε αυτήν τη σειρά: Power Query: Αντιμετώπιση πολλαπλών πανομοιότυπων κεφαλίδων.

ενδιαφέροντα άρθρα...