[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Rechnen in InDesing Tabellen: Zellen multiplizieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Rechnen in InDesing Tabellen: Zellen multiplizieren

vaude_ml
Beiträge gesamt: 23

24. Mär 2011, 13:36
Beitrag # 1 von 6
Bewertung:
(7735 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle,
insbesondere Martin Fischer und andere IDScripting-Profis.

Zum Thema Rechnen in InDesing habe ich schon eingies gefunden:

http://www.hilfdirselbst.ch/..._Zahlen_P254925.html

http://www.hilfdirselbst.ch/..._reply;so=ASC;mh=15;

http://p2m.ch/...&read_article=69

Alles sehr hilfreich!
Nur habe ich nichts entdeckt, was mir beim Multiplizieren von Zahlen hilft - komischerweise bietet dass auch das moonCalc-Script nicht an.

Deshalb meine Frage: Gibt es ein besseres Tool als moonCalc, das genauso funktioniert, aber auch multiplizieren kann?
(3 Zellen markieren, Script ausführen, Inhalte aus Zelle 1 und 2 werden miteinander verrechnet, in Zelle 3 wird das Ergebnis eingetragen.)

Oder noch besser:
Darf / kann jemand moonCalc um eine Multiplikations-option ergänzen oder ein vergleichbares tool scripten?

(wenn es mit "markieren" zu schwierig ist, wäre es mit 3 Zeichenformaten als Selector auch denkbar.)

Vielen Dank!
Schöne Grüße,
Matthias
X

Rechnen in InDesing Tabellen: Zellen multiplizieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Mär 2011, 14:07
Beitrag # 2 von 6
Beitrag ID: #467606
Bewertung:
(7719 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

wenn Du flexibel rechnen und selber Hand anlegen können willst, schau Dir mal das Plugin SmartStyles an.

Neben seinem Hauptzweck, der Formatierung (von Text und Tabellen) ist es auch in der Lage, Tabellenzeilen zu sortieren und ... über Formeln zu berechnen.

Multitiplizieren geht z.B. über 'PRODUCT(Über)' oder 'PRODUCT(A2, B2)' oder 'PRODUCT(Links)'.

Beispiel


als Antwort auf: [#467601]
(Dieser Beitrag wurde von Martin Fischer am 24. Mär 2011, 14:11 geändert)

Rechnen in InDesing Tabellen: Zellen multiplizieren

vaude_ml
Beiträge gesamt: 23

24. Mär 2011, 14:31
Beitrag # 3 von 6
Beitrag ID: #467608
Bewertung:
(7704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
Danke für die Antwort!

SmartStyles ist sicherlich ein interessantes Plugin.
Nur leider sind 200€ zu teuer, dafür dass ich vielleicht alle zwei Monate mal eine einzige Funktion (Multiplizieren) daraus nutzen werde.
Gibt es noch eine andere Lösung?
Wäre es viel Aufwand soetwas zu scripten?

Vielen Dank,
Matthias


als Antwort auf: [#467606]

Rechnen in InDesing Tabellen: Zellen multiplizieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Mär 2011, 15:00
Beitrag # 4 von 6
Beitrag ID: #467612
Bewertung:
(7686 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ohne alle Prüfungen und Einschränkungen:

Code
var s = app.selection[0]; 
s.cells.item(2).texts.firstItem().contents = String(s.cells.item(1).texts.firstItem().contents * s.cells.item(1).texts.firstItem().contents);



als Antwort auf: [#467608]

Rechnen in InDesing Tabellen: Zellen multiplizieren

vaude_ml
Beiträge gesamt: 23

24. Mär 2011, 16:24
Beitrag # 5 von 6
Beitrag ID: #467626
Bewertung:
(7668 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,
zunächst vielen Dank für die schnelle Hilfe.
Da mein Mathelehrer ind er Grundschule der Meinung war, 2*5=10 und nicht 4, muss in Ihrem Script wohl ein Fehler sein. ;-)
Ich habe ihn bereits gefunden, und beseitigt. Außerdem habe ich das Thema "2-Kommastellen ausgeben" und das Deziamltrennzeichen-austauschen mit eingebaut.

Juhuu, jetzt kann ich es wie gewünscht einsetzen!
Vielleicht hilft es noch anderen Leuten:
Code
// simpleMultiplication.jsx  
// http://www.hilfdirselbst.ch/gforum/gforum.cgi?post=467612#467612

var s = app.selection[0];

//variablen für zelleninhalte der ersten beiden zellen
var s1 = String(s.cells.item(0).texts.firstItem().contents);
var s2 = String(s.cells.item(1).texts.firstItem().contents);

// Kommas durch Punkte ersetzen
var s1Punkt = String( s1).replace(",", ".");
var s2Punkt = String( s2).replace(",", ".");

//Hier findet die Multiplikation statt
var loesung = String( s1Punkt*s2Punkt);

// Punkt im Ergebnis wieder durch Komma ersetzen (wenn der digitFormatter zur Ausgabe benutzt wird, ist dies unnötig)
var loesungKomma = String( loesung).replace(".", ",");

// lösung mit zwei kommastellen versehen
function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+3);
}

// loesung in dritte Zelle ausgeben
s.cells.item(2).texts.firstItem().contents = digitFormatter(loesung);



Bitte um Info, wenn jemand nen Fehler findet. Wie schonmal geschrieben, kann ich nur Scripts logisch zusammenkopieren und nicht wirklich selber scripten.
Vielen Dank und viel Spaß damit,
Matthias


als Antwort auf: [#467612]

Rechnen in InDesing Tabellen: Zellen multiplizieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Mär 2011, 16:35
Beitrag # 6 von 6
Beitrag ID: #467628
Bewertung:
(7664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Da mein Mathelehrer in der Grundschule der Meinung war, 2*5=10 und nicht 4, muss in Ihrem Script wohl ein Fehler sein. ;-)


Der Mathelehrer in der Grundschule wußte wahrscheinlich noch nichts von Copy & Paste und den damit verbundenen Risiken. ;-)

Prima wenn's nun läuft.
Und danke für den erweiterten Code.

Einen Fehler kann ich spontan nicht erkennen.
Allerdings finden keine Validitätsprüfungen statt:
1. erwartete Auswahl = mindestens drei Tabellenzellen;
2. erwarteter Inhalt der ersten beiden Tabellenzellen = nur Zahlen.


als Antwort auf: [#467626]
(Dieser Beitrag wurde von Martin Fischer am 24. Mär 2011, 16:39 geändert)
X