[PYTHON] Mémorandum ((1) Copier et coller à partir d'un autre livre (2) Reportez-vous au tableau de comparaison avec openpyxl)

Aperçu

Puisque j'ai pu implémenter la deuxième étape dans l'article précédent, "Ajouter le paramètre 1 / paramètre 2 à chaque ligne en utilisant le tableau de comparaison du tableau 1", je vais le résumer. https://qiita.com/wellwell3176/items/7dba981b479c5933bf5f

Résultat

A réussi à générer automatiquement les résultats montrés sur la figure 2 à partir des données brutes montrées sur la figure 1 et du tableau de comparaison. image.png Figure 1 Gauche: Données brutes Droite: Tableau de comparaison image.png Résultats de la figure 2

program


import openpyxl
wb1=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/data3.xlsx')
ws1=wb1.active

#Préparez un tableau de comparaison séparé en tant que maître. Je veux extraire la valeur numérique du côté principal au lieu de la formule, donc les données_only=Ouvrir avec vrai
wb2=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/table.xlsx',data_only=True)
ws2=wb2.active

for i in range(12):
  for j in range(3):
    copy = ws2.cell(row = i+1, column = j+3).value
    ws1.cell(row = i+1, column =j+10,value=copy)

#La référence d'un autre livre ne s'est pas bien passée, alors copiez le tableau de comparaison une fois
#la gamme est i=Cela commence à 0, mais les lignes et les colonnes commencent à 1, donc ajustez

min_row=2
max_row=ws1.max_row #Obtenez le nombre de lignes car le traitement est appliqué de la deuxième ligne à la dernière ligne

ws1["H1"].value="Réglage 1"
ws1["I1"].value="Réglage 2" #C'était plus rapide d'entrer dans le cap

for i in range(min_row, max_row):
  ws1.cell(row=i, column=7).value ="=D{}&E{}".format(i,i)
  #Entrez la catégorie + entreprise dans la 7e colonne
  ws1.cell(row=i, column=8).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),2)".format(i) 
  ws1.cell(row=i, column=9).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),3)".format(i) 
  #Utilisez INDEX pour interroger la table de recherche et la colonne 7. Entrez le résultat

wb1.save('/content/drive/My Drive/Colab Notebooks/data4.xlsx')

problème

・ Je souhaite supprimer la colonne G, la colonne J, la colonne K et la colonne L de la figure 2 car elles ne sont pas nécessaires dans le processus suivant, mais je ne peux pas les supprimer car j'utilise une référence.

⇨ En tant que solution de force brute, vous pouvez ouvrir data4 avec data_only = true et copier et coller les colonnes autres que les colonnes inutiles dans un nouveau fichier, mais je pense que c'est inutile.

・ Je ne sais pas comment faire référence à un autre livre

Cette fois, j'ai copié le contenu de table.xlsx dans data4.xlsx puis j'ai utilisé la fonction INDEX, Il vaut mieux se référer à table.xlsx depuis le début ... mais je n'ai pas trouvé de moyen de le décrire. Ce sera la prochaine tâche.

Recommended Posts

Mémorandum ((1) Copier et coller à partir d'un autre livre (2) Reportez-vous au tableau de comparaison avec openpyxl)
Manipulez le presse-papiers en Python et collez le tableau dans Excel
Comment copier et coller le contenu d'une feuille au format JSON avec une feuille de calcul Google (en utilisant Google Colab)
Implémenté dans Dataflow pour copier la structure hiérarchique de Google Drive vers Google Cloud Storage
Mémorandum Python: reportez-vous au texte et modifiez le nom du fichier lors de la copie du fichier cible
Cisco IOS-XE capture les changements dans la table de routage et les messages au service externe
Je veux remplacer les variables dans le fichier de modèle python et le produire en masse dans un autre fichier
Commande de raccourci Jedi-vim qui vous permet de faire référence à la source de la définition et à la destination de la définition en Python
Je souhaite copier un article en anglais à partir d'un pdf et le mettre dans Google Traduction