2017-03-28 1 views
0

J'utilise des données CSV dans une feuille de calcul Google dont les noms s'exécutent verticalement dans la colonne A et les questions qui s'exécutent horizontalement dans la ligne 1. Il y a des scores dans certaines colonnes et autres sont vides. Comme tel:Google Sheets: Formule pour regrouper toutes les colonnes avec la première colonne

|  | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | 
|-------|-----|-----|----|-----|-----|----|-----| 
| Name1 | ##% | ##% | | ##% | ##% | | ##% | 
| Name2 | ##% | ##% | | ##% | ##% | | ##% | 
| Name3 | ##% | ##% | | ##% | ##% | | ##% | 
| Name4 | ##% | ##% | | ##% | ##% | |  | 
| Name5 | ##% | ##% | | ##% | ##% | |  | 

Je voudrais construire une formule pour faire correspondre chaque scores colonnes avec la colonne de noms et l'en-tête de colonne en seulement 3 colonnes quelle que soit la météo il y a des valeurs dans les cellules. Je voudrais une colonne de noms, une colonne de titre de la question, et une colonne de score comme ce qui suit:

| Name1 | Q1 | ##% | 
| Name2 | Q1 | ##% | 
| Name3 | Q1 | ##% | 
| Name4 | Q1 | ##% | 
| Name5 | Q1 | ##% | 
| Name1 | Q2 | ##% | 
| Name2 | Q2 | ##% | 
| Name3 | Q2 | ##% | 
| Name4 | Q2 | ##% | 
| Name5 | Q2 | ##% | 
| Name1 | Q3 | ##% | 
| Name2 | Q3 |  | 
| Name3 | Q3 |  | 
| Name4 | Q3 |  | 
| Name5 | Q3 |  | 
And so on.... 

Actuellement, je fais cela par la cellule A1 d'une nouvelle feuille rangeant la première colonne à plusieurs reprises comme:

= {FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>""); FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"")};

puis mise en réseau de toutes les colonnes de ce type dans la cellule B2: ={FILTER(Input!B:B,Input!A:A<>"");FILTER(Input!C:C,Input!A:A<>"");FILTER(Input!D:D,Input!A:A<>"");FILTER(Input!E:E,Input!A:A<>"");FILTER(Input!F:F,Input!A:A<>""); FILTER(Input!G:G,Input!A:A<>"");FILTER(Input!H:H,Input!A:A<>"");FILTER(Input!I:I,Input!A:A<>"");FILTER(Input!J:J,Input!A:A<>"");FILTER(Input!K:K,Input!A:A<>"");}

I ont la formule I ont fait baisser la colonne C pour trouver les lignes d'en-tête dans le tableau et les copier pour tous les noms.

Comme j'ai des centaines de colonnes de questions, ces formules matricielles sont énormes. Existe-t-il un moyen plus simple de faire cela simplement en référençant toutes les colonnes avec une sorte de matrice?

Toute aide est appréciée.

+0

Pouvez-vous partager un exemple de feuille de calcul pour que nous ayons des données à utiliser? – JPV

+0

Vous souhaiterez peut-être créer un script personnalisé à l'aide du script google apps. –

Répondre

1

J'ai un exemple de script pour ce genre de tâches. Il peut être utilisé comme formule personnalisée:

=unpivotTable(false, B1, B2, B3)

  1. false à utiliser le fichier en cours
  2. B1 occupe la première gamme d'en-tête: Sheet1!A1
  3. B2 détient la deuxième gamme d'en-tête: Sheet1!B1:Z1
  4. B3 maintenez les en-têtes de colonnes s pour pivotés: Question,%

Plese essayer si mon script vous convient:

Sample file à explorer.

+0

C'est exactement ce dont j'ai besoin. Merci d'avoir partagé. –