3 votes

Comment puis-je configurer Numbers pour qu'il copie automatiquement une ligne de données d'une feuille à une autre ?

J'ai une feuille de calcul Numbers qui contient des années de données. J'aimerais appeler des lignes spécifiques dans la feuille de calcul et copier uniquement ces lignes dans une nouvelle feuille du même fichier où je voudrais collecter les données. Les lignes que je veux appeler contiennent toutes deux mots spécifiques dans la même colonne.

Idéalement, je voudrais donc une fonction qui me permette de faire correspondre une recherche de "John Doe" dans la feuille 1-tableau 1-colonne G, de sélectionner toute la ligne de données, de la copier et de la coller dans la feuille 2.

Quelle fonction, ou plusieurs fonctions, peut-on utiliser pour y parvenir ?

1voto

John M Gant Points 6147

Je ne sais pas si c'est possible de faire ça avec des fonctions, mais ça pourrait l'être. Il existe une fonction appelée VLOOKUP qui semble pouvoir faire ce que vous voulez, mais je n'ai pas réussi à le faire fonctionner lors de mes essais. Une fonction qui existe dans une seule cellule a du mal à renvoyer plusieurs valeurs pour plusieurs cellules.

Ce qui fonctionne, à mon avis, bien que ce ne soit pas aussi pratique que vous le souhaiteriez, c'est l'affichage des filtres. Sur le côté droit de la fenêtre, si vous sélectionnez la vue "Trier et filtrer" et l'onglet "Filtre", vous pouvez "Ajouter un filtre" qui correspondra à une valeur dans une colonne spécifiée. En basculant ce filtre à l'aide de la case à cocher dans le coin de la boîte de ce filtre, vous masquerez toutes les lignes qui ne correspondent pas à ce critère, puis il vous suffira de mettre en surbrillance toutes les cellules, de les copier et de les coller dans une autre feuille.

Malheureusement, cela ne continuera pas à ajouter des lignes au fur et à mesure que vous ajoutez des lignes dans la première feuille, donc si cette fonctionnalité est quelque chose dont vous avez besoin, cela ne répondra pas à votre question. Si vous n'avez besoin que d'une seule copie, je pense que c'est l'option la plus simple (et la seule que je connaisse, mais je ne suis pas très familier avec Numbers).

-1voto

Mockman Points 847

Il s'agit évidemment d'une vieille question, mais elle est apparue pour moi et c'est quelque chose que j'ai parfois voulu faire, alors j'ai pensé poster une réponse tardive.

Il prévoit que le document 1 comportera deux tableaux sur la feuille 1, et que la taille du tableau 2 pourra englober les données copiées. Si la colonne clé est d'un format spécial (par exemple, une date), cela ne fonctionnera pas, car les dates nécessitent un traitement spécial ; il faut donc changer son format en texte. Et évidemment, il n'y a pas de gestion des erreurs.

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        -- because of the indecent and desperate need for Numbers to wrap text
        set text wrap of cell range to false 

        set kc to column "C" -- key column
        set rp to (cells of kc whose value contains "September") -- matching rows
        set hr to {} -- Get headings to copy to table 2
        copy value of cells of row 1 to hr
        set db to {} -- get cell values from matching rows
        repeat with rs in rp
            copy value of cells of row of rs to end of db
        end repeat
        -- each row's data will appear like this: {3.0, "Sun", "September 24", "W", "Denver Broncos"}
    end tell
        -- set db to rest of db -- If heading row contains match then uncomment

    tell table 2 of sheet 1 of document 1
        clear cell range
        set rc to count of db -- row count
        set cc to count of item 1 of db -- column count
        repeat with y4 from 1 to rc -- for every row
            repeat with x8 from 1 to cc -- for every column
                set value of cell x8 of row (y4 + 1) to item x8 of item y4 of db
            end repeat
        end repeat
        tell row 1 -- Set table headings to match table 1
            repeat with j from 1 to count of columns
                set value of cell j to item j of hr
            end repeat
        end tell
        set text wrap of cell range to false -- see above
    end tell
end tell

Ceci ne fait pas partie de la réponse mais permet de charger les données de l'échantillon dans le tableau 1 (min 5x5).

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        set column count to 5
        set row count to 5
        set ev to {{"Week", "Day", "Date", "WL", "Opponent"}, {2.0, "Sun", "September 17", "L", "Carolina Panthers"}, {3.0, "Sun", "September 24", "W", "Denver Broncos"}, {4.0, "Sun", "October 1", "W", "Atlanta Falcons"}, {5.0, "Sun", "October 8", "L", "Cincinnati Bengals"}}
        set evy to count of ev
        set evx to count of item evy of ev
        repeat with y from 1 to (evy)
            repeat with x from 1 to evx
                set value of cell x of row y to item x of item (y) of ev
            end repeat
        end repeat
    set format of column "C" to text -- date format requires special handling
    set text wrap of cell range to false
    end tell
end tell

Note sur le format de la date : Vous ne pouvez pas comparer une chaîne de caractères au mois d'un objet date. Vous pourriez probablement fabriquer une méthode en décomposant les cellules de la date : set x to value of cell "C2" , set y to month of x , set z to x as text mais il devrait être plus facile de convertir en texte, d'exécuter le script normalement et si nécessaire, de reconvertir en date.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X