 |
Metallographie Forum Die Diskussionsplattform für Metallographie
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Boromir

Anmeldedatum: 09.08.2007 Beiträge: 361 Wohnort: Berlin
|
Verfasst am: Do, 16. Aug, 2007 11:39 Titel: Excel-Problem |
|
|
puh. ich errechne grad in einer excel tabelle in abhängigkeit von cloridgehalt, spaltbreite,spalttiefe, ph-wert, werkstoff uvm. die korosionsgeschwindigkeit.
viele werte muss ich erst suchen. dies mache ich zurzeit mit der "zielwertsuche". (zellwert 1 (mit formel) soll 0,9 werden, verändert werden darf zelle 2.)
nunja. klappt ganz gut soweit. aber da zur errechnung des ph-wertes der "negative logaritmus-1" gefragt ist hängt sich das programm an dieser stelle immer auf, da in der oben beschriebenen ph-wert-zelle 2 zumeist die fehlermeldung #zahl! steht. meist ließ sich das problem lösen wenn ich in die veränderbare zelle 1 eine zahl geschrieben hab (meist 1, 50, 100 1000 oder ähnlich)
ich hab schon ein kleines makro geschrieben. nur leider funktioniert eben dieses nur wenn beim ph-wert(zelle 2) schon eine zahl steht, und nicht ein "#fehler!".
wie kann ich dem makro sagen das er testen soll ob in der zelle 2 eine zahl unter 12 steht? und wenn dort keine zahl oder eben ein fehler steht, das er in zelle 1 eine andere zahl (könnte ich vorgeben) hinschreiben soll.
brauche es echt dringend, weil ich zurzeit echt ewigkeiten brauche!
hier mein makro zurzeit:
| Code: | Sub nummer_1()
'
' nummer_1 Makro
' Makro am 31.07.2007 von Material Investigation aufgezeichnet
'
' Tastenkombination: Strg+a
'
Range("D1").Select
Range("D1").GoalSeek Goal:=0.000001, ChangingCell:=Range("B1")
Range("D3").Select
Range("D3").GoalSeek Goal:=22.4, ChangingCell:=Range("B3")
Range("D4").Select
Range("D4").GoalSeek Goal:=0.000001, ChangingCell:=Range("B4")
Range("B5").Select
ActiveCell.FormulaR1C1 = "1000"
Range("M6").Select
Range("M6").GoalSeek Goal:=0.9, ChangingCell:=Range("B5")
End Sub |
es währe auch eine möglichkeit das excel einfach bei dem ermittelten weert alle kommastellen abschneidet, bzw aufrundet- geht das im makro?
ich stelle mir das etwa so vor:
| Code: | Sub nummer_1()
'
' nummer_1 Makro
' Makro am 31.07.2007 von Material Investigation aufgezeichnet
'
' Tastenkombination: Strg+a
'
Range("D1").Select
Range("D1").GoalSeek Goal:=0.000001, ChangingCell:=Range("B1")
Range("D3").Select
Range("D3").GoalSeek Goal:=22.4, ChangingCell:=Range("B3")
Range("D4").Select
Range("D4").GoalSeek Goal:=0.000001, ChangingCell:=Range("B4")
Range("D5").Select
Range("D5").GoalSeek Goal:=0.02, ChangingCell:=Range("B5")
Range("b5").Select
Range("B5").Runden auf ganze zahl-->dann:
Range("M6").Select
Range("M6").GoalSeek Goal:=0.9, ChangingCell:=Range("M3")
End Sub |
_________________ Gruß
Boromir Fischer
- Metallographie Forum - |
|
| Nach oben |
|
 |
Hase

Anmeldedatum: 16.07.2007 Beiträge: 215 Wohnort: Berlin
|
Verfasst am: Sa, 18. Aug, 2007 00:22 Titel: |
|
|
Hmmm ... leider bin ich dieser Makrosprache nicht so mächtig. Aber Du musst das doch gar nicht IN dem Makro machen, oder? Müsste doch auch als Formel in der Tabelle gehen, also einfach mit WENN/DANN-Konstrukt:
Wenn Zellwert B2 kleiner als 12, dann =B2. Wenn B2 leer, dann =1. Wenn B2=Fehler, dann =1.
Weisste was ich meine? |
|
| Nach oben |
|
 |
Boromir

Anmeldedatum: 09.08.2007 Beiträge: 361 Wohnort: Berlin
|
Verfasst am: Mo, 20. Aug, 2007 10:36 Titel: |
|
|
| Hase hat Folgendes geschrieben: | | Weisste was ich meine? |
nö
aber die sache ist ja das die zellen schon alle mit formeln versehen sind. wenn ich die jetzt noch umbauen muss, dann werd ich bekloppt außerdem kenne ich mich mit wenn-dann konstrukten genauso minimal aus wie mit makros
ich arbeite mich jetzt grad per hand durch. hab schon ganz eckige augen. aber immerhin bin ich noch schneller als der prof *zungerausstreck*
ich glaube das problem ist einfach zu speziell. in 1-2 tagen sollte ich damit durch sein.*puh*
danke für die gedanken.
Boro _________________ Gruß
Boromir Fischer
- Metallographie Forum - |
|
| Nach oben |
|
 |
Hase

Anmeldedatum: 16.07.2007 Beiträge: 215 Wohnort: Berlin
|
Verfasst am: Mo, 20. Aug, 2007 19:52 Titel: |
|
|
Hmmm ... WARUM steht denn in manchen Zellen eigentlich dieses "#zahl!"? Das kommt doch immer wenn die Spalte bzw. Zeile als Zahl formatiert ist, aber etwas anderes drin auftaucht, oder?
Und was ich meinte, ist daß ich mir einfach eine weitere Spalte anlegen würde, in welcher ich die Werte ggf. umrechnen würde. Zelle D10 sei zum Beispiel die Zelle, in der die kritischen Werte stehen. Dann schreib ich in D11 zum überprüfen ob es sich um eine leere Zelle handelt, folgende Formel:
| Code: | | =WENN(ISTLEER(D10);1;D10) |
Wenn die Zelle leer ist, wird sie automatisch mit einer 1 gefüllt, ansonsten wird der originale Zellwert übernommen.
Ich kann auch überprüfen lassen ob der Zellinhalt eine Zahl ist, oder nicht:
| Code: | | =WENN(ISTZAHL(D10);D10;1) |
Nun wird der Zellinhalt nur übernommen WENN er auch eine Zahl ist, ansonsten wird er durch 1 ersetzt.
Sooo würde ich mich da erst mal rüberretten, um mich nicht mit Makros rumschlagen zu müssen.
Na viel Spass noch!  |
|
| Nach oben |
|
 |
Boromir

Anmeldedatum: 09.08.2007 Beiträge: 361 Wohnort: Berlin
|
Verfasst am: Di, 21. Aug, 2007 10:27 Titel: |
|
|
hei. deine idee hat mich auf eine idee gebracht. und da das weite web für vieles eine lösung bereit hält hab ich es sogar geschafft
| Code: | Range("B5").Select
For Each cell In Selection
cell.Value = WorksheetFunction.Round(cell, 0)
Next |
"wähle zelleb5 aus und runde auf 0 stellen ab."
perfekt
problem gelößt!!!  _________________ Gruß
Boromir Fischer
- Metallographie Forum - |
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|