freshman2017
Goto Top

Excel-Zellen addieren

Guten Abend an alle,

ich möchte gerne am besten über Batch oder Shell Zellen ab A2 und B2 zusammenrechnen.Das Ergebnis soll in Spalte C stehen. Ist da was möglich mit Batch oder Shell?

Beste Grüße.

Content-Key: 472018

Url: https://administrator.de/contentid/472018

Printed on: April 19, 2024 at 01:04 o'clock

Member: em-pie
em-pie Jul 11, 2019 at 20:49:01 (UTC)
Goto Top
Moin,

Habe kein fertiges Script zur Hand, was aber gut ist - für dich, da nachhaltiger face-wink

Such' mal im WWW nach Excel und Powershell. Damit kannst du Exceldokumente hervorragend bearbeiten.
Alternativ ginge auch vbs, dann musst du per Batch nur das vbs-Script aufrufen

Gruß
em-pie
Member: freshman2017
freshman2017 Jul 12, 2019 at 07:13:05 (UTC)
Goto Top
Moin em-pie,

vielen Dank für Deine Rückmeldung. Hatte schonnmal hier im Forum gesucht, aber leider nichts gefunden.
Member: SlainteMhath
SlainteMhath Jul 12, 2019 at 07:21:54 (UTC)
Goto Top
Moin,

About 3.140.000 results (0,49 seconds)
https://www.google.com/search?q=read+and+write++excel+with+powershell

lg,
Slainte
Member: colinardo
Solution colinardo Jul 12, 2019 updated at 07:36:43 (UTC)
Goto Top
Servus @freshman2017,
Damit hier ab und zu mal wieder was konstruktives steht als nur noch Verweise zu Google weil man meint zu jedem Thread was schreiben zu müssen um Punkte zu sammeln, bitte:
back-to-topVBS:
strPfad = "D:\freshman2017\mappe.xlsx"  
Set objExcel = CreateObject("Excel.Application")  
objExcel.DisplayAlerts = False
objExcel.Visible = True
With objExcel.Workbooks.Open(strPfad).Sheets(1)
	.Range("C2").Formula = "=$A2+$B2"  
	.Range("C2").AutoFill .Range("C2:C" & .Cells(.Rows.Count,"A").End(-4162).Row)  
	.Parent.Save
	.Parent.Close True
End With
objExcel.DisplayAlerts = True
objExcel.Quit()
back-to-topPowershell
# Quelldatei
$quelle = 'D:\freshman2017\mappe.xlsx'  
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# Mappe öffnen
$wb = $objExcel.Workbooks.Open($quelle)
# Excel anzeigen
$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false
# Arbeitsblatt definieren
$ws = $wb.Sheets.Item(1)
# Formel in C2 eintragen
$ws.Range("C2").Formula = '=$A2+$B2'  
# Autofill der Formeln in Spalte C vornehmen
$ws.Range("C2").AutoFill($ws.Range("C2:C" + $ws.Cells($ws.Rows.Count,"A").End(-4162).Row))  
# Datei speichern
$wb.Save()
$objExcel.DisplayAlerts = $true
# Dokument schließen
$wb.Close($false)
# Excel schließen
$objExcel.Quit()
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)
Grüße Uwe
Member: freshman2017
freshman2017 Jul 12, 2019 at 07:59:46 (UTC)
Goto Top
Servus Uwe,

was kann ich tun, dass das VBS Script im Hintergrund arbeitet und die Excel Sheet im Hintergrund bearbeitet? In der Spalte C stehen jetzt die Formeln und nicht die Werte, kann man das auch anpassen? face-smile
Member: colinardo
colinardo Jul 12, 2019 updated at 08:06:59 (UTC)
Goto Top
Zitat von @freshman2017:
was kann ich tun, dass das VBS Script im Hintergrund arbeitet
und die Excel Sheet im Hintergrund bearbeitet?
Wofür steht wohl Zeile 4?! Genau, damit steuerst du das, True für sichtbar, False für unsichtbar.
objExcel.Visible = False

In der Spalte C stehen jetzt die Formeln und nicht die Werte, kann man das auch anpassen? face-smile
Ja schalte in deinem Excel die Anzeige der Formeln statt der Werte ab.
Geht hier einwandfrei.
Member: Kraemer
Kraemer Jul 12, 2019 at 09:07:53 (UTC)
Goto Top
Moin,
Zitat von @freshman2017:
ich möchte gerne am besten über Batch oder Shell Zellen ab A2 und B2 zusammenrechnen.Das Ergebnis soll in Spalte C stehen. Ist da was möglich mit Batch oder Shell?
ohne eine Krücke über Excel zu bauen, nur, wenn die Spalten überschriften haben.

Mit ImportExcel für Powershell würde dass dann so aussehen:

$xlsx=Import-Excel -Path "C:\Temp\Admin.xlsx" -WorksheetName "Tabelle1"  
ForEach ($Line in $xlsx){
    $Line.SpalteC=$Line.SpalteA+$Line.SpalteB
}
$xlsx | Export-Excel -Path "C:\Temp\Admin.xlsx" -WorksheetName "Tabelle1"