Da ich den zweiten Schritt im vorherigen Artikel "Hinzufügen von Einstellung 1 / Einstellung 2 zu jeder Zeile mithilfe der Vergleichstabelle in Tabelle 1" implementieren konnte, werde ich ihn zusammenfassen. https://qiita.com/wellwell3176/items/7dba981b479c5933bf5f
Es gelang, die in Fig. 2 gezeigten Ergebnisse automatisch aus den in Fig. 1 gezeigten Rohdaten und der Vergleichstabelle zu erzeugen. Abbildung 1 Links: Rohdaten Rechts: Vergleichstabelle Abbildung 2 Ergebnisse
program
import openpyxl
wb1=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/data3.xlsx')
ws1=wb1.active
#Bereiten Sie eine separate Vergleichstabelle als Master vor. Ich möchte den numerischen Wert von der Masterseite anstelle der Formel ziehen, also Daten_only=Öffnen Sie mit true
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)
#Die Referenz aus einem anderen Buch lief nicht gut, also kopieren Sie die Vergleichstabelle einmal
#Reichweite ist i=Es beginnt bei 0, aber die Zeilen und Spalten beginnen bei 1, also passen Sie es an
min_row=2
max_row=ws1.max_row #Ermitteln Sie die Anzahl der Zeilen, da die Verarbeitung von der zweiten bis zur letzten Zeile angewendet wird
ws1["H1"].value="Einstellung 1"
ws1["I1"].value="Einstellung 2" #Es war schneller, die Überschrift einzugeben
for i in range(min_row, max_row):
ws1.cell(row=i, column=7).value ="=D{}&E{}".format(i,i)
#Geben Sie in der 7. Spalte Kategorie + Geschäft ein
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)
#Verwenden Sie INDEX, um die Nachschlagetabelle und Spalte 7 abzufragen. Geben Sie das Ergebnis ein
wb1.save('/content/drive/My Drive/Colab Notebooks/data4.xlsx')
・ Ich möchte die G-Spalte, J-Spalte, K-Spalte und L-Spalte in Abb. 2 löschen, da sie im nachfolgenden Prozess nicht erforderlich sind. Ich kann sie jedoch nicht löschen, da ich eine Referenz verwende.
⇨ Als Brute-Force-Lösung können Sie data4 mit data_only = true öffnen und andere Spalten als unnötige Spalten kopieren und in eine neue Datei einfügen. Ich halte dies jedoch für nutzlos.
・ Ich weiß nicht, wie ich mich auf ein anderes Buch beziehen soll
Dieses Mal habe ich den Inhalt von table.xlsx nach data4.xlsx kopiert und dann die INDEX-Funktion verwendet. Es ist besser, von Anfang an auf table.xlsx zu verweisen ... aber ich konnte keinen Weg finden, es zu beschreiben. Es wird die nächste Aufgabe sein.
Recommended Posts