ich habe da ein etwas ungewöhnliches Problem, na ja vielleicht gibts ja ne
Lösung:
Wir müssen für einen Auftraggeber Aufmasslisten zur Rechnung abgeben. D.h.,
das Aufmass existiert bereits als Tabellenblatt, welches auf der Baustelle
vom Monteur um die Stck-Zahl der jeweiligen verbauten Teile per Zahl oder
Strichliste ergänzt wird.
Jetz muss aber das abzugebene Aufmassblatt komplett als Strichliste
(Horrorbürokratie) mit zur Rechnung gegeben werden. Jetzt sitzt man da
eben, und kritzelt alle Stückzahlen wie beim Schafkopfen auf ein neues
Blatt.
Frage:
Könnte man jetzt die Stck-Zahl numerisch per Tastatur eingeben, aber in der
Zelle als Strichliste ausgeben lassen?
z.B. Eingabe numerisch [7] --> Ausgabe/Ausdruck = ||||| ||
Noch besser wäre natürlich bei Fünferblöckern der traditionelle Querstrich.
Ffür mich als ein kleines Licht am Excel-Horizont unlösbar :( darum dankbar
für jeden hilfreichen Ansatz!
--
Gruss, Juergen
>-----Originalnachricht-----
>.
die Funktion heißt Wiederholen, als Strich kannst Du das
große i nehmen.
Gruß
Rainer
> Jetz muss aber das abzugebene Aufmassblatt komplett als Strichliste
> (Horrorbürokratie) mit zur Rechnung gegeben werden.
Vergiss es. Schreib die Stückzahl in die Aufmassblätter (ev. getrennt
nach 1. Aufmass, 2. Aufmasse etc. mit folgender Gesamtsumme). Ist die
Strichliste im Auftrag (Vertrag) so geregelt? Wenn nicht, wende dich an
den Auftraggeber und erkläre, dass du für diese unnötige und
willkürliche Bürokratie eine Aufwandsentschädigung berechnest (Position
xx EUR pro Stunde für Aufmasserstellung).
Versuche herauszufinden, warum die Strichliste verlangt wird und finde
mit dem Auftraggeber eine ernsthafte Lösung.
Viele Grüsse
arno
Hallo Rainer,
das wäre schon i.O., doch fehlt dabei die Trennung in Fünferblöcke.
Wenn 24 Stck eingeben werden würden, sollte das so aussehen:
||||||||||||||||||||||||
Benötige aber Ausgabe dieser Art: ||||| ||||| ||||| ||||| ||||
--
Gruss, Juergen
Juergen Bohl schrieb am 01.09.2004
> das wäre schon i.O., doch fehlt dabei die Trennung in Fünferblöcke.
> Wenn 24 Stck eingeben werden würden, sollte das so aussehen:
>||||||||||||||||||||||||
>
> Benötige aber Ausgabe dieser Art: ||||| ||||| ||||| ||||| ||||
Dann könntest Du eine benutzerdefinierte Funktion verwenden, welche die
Zahl als Striche ausgibt:
Public Function Striche(Zahl As Double) As String
Dim intI As Integer
For intI = 1 To Int(Zahl / 5)
Striche = Striche & "IIIII "
Next intI
If Zahl Mod 5 Then
For intI = 1 To Zahl Mod 5
Striche = Striche & "I"
Next intI
End If
End Function
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
[Win XP Pro SP-1 / xl2000 SP-3]
Hi Thomas
Das geht auch ganz ohne VBA :-))
=WECHSELN(WIEDERHOLEN("|";A1);"|||||";"||||| ")
Frank
Frank Kabel schrieb am 01.09.2004
> Das geht auch ganz ohne VBA :-))
Ich habe es ja auch im Konjunktiv geschrieben ;-)
> =WECHSELN(WIEDERHOLEN("|";A1);"|||||";"||||| ")
...aber das hätte mir auch einfallen können (sollen) - Danke
Juergen Bohl schrieb:
> Könnte man jetzt die Stck-Zahl numerisch per Tastatur eingeben, aber in der
> Zelle als Strichliste ausgeben lassen?
> z.B. Eingabe numerisch [7] --> Ausgabe/Ausdruck = ||||| ||
> Noch besser wäre natürlich bei Fünferblöckern der traditionelle Querstrich.
von mir auch noch ein Lösungsvorschlag:
Speicher folgende Prozedur im Codemodul der Tabelle.
Es wird der Bereich A1:A20 auf Eingabe einer Zahl überwacht und umgewandelt:
Option Explicit
DefInt I
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim dblRest As Double
Dim intNumber, intFünfer, intI, intCount
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rngCell In Target
If IsNumeric(rngCell) Then
With rngCell
intNumber = .Value
intFünfer = Application.RoundDown((intNumber / 5), 0)
dblRest = intNumber - intFünfer * 5
.Value = ""
For intI = 1 To intFünfer
.Value = .Value & "|||| "
Next intI
If dblRest = 0 Then .Value = VBA.Left(.Value, Len(.Value) - 1)
For intI = 1 To dblRest
.Value = .Value & "|"
Next intI
For intI = 1 To intFünfer
.Characters(Start:=intI + intCount, Length:=4).Font.Strikethrough = True
intCount = intCount + 4
Next intI
End With
End If
Next rngCell
Application.EnableEvents = True
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
> Juergen Bohl schrieb:
>> Könnte man jetzt die Stck-Zahl numerisch per Tastatur eingeben, aber in der
>> Zelle als Strichliste ausgeben lassen?
>> z.B. Eingabe numerisch [7] --> Ausgabe/Ausdruck = ||||| ||
>> Noch besser wäre natürlich bei Fünferblöckern der traditionelle Querstrich.
habe noch etwas an der Prozedur rumgefeilt, um Fehler abzufangen:
DefInt I
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim dblRest As Double
Dim intNumber, intFünfer, intI
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rngCell In Target
With rngCell
.Font.Strikethrough = False
If IsNumeric(rngCell) And .Value > 0 Then
intNumber = .Value
intFünfer = Application.RoundDown((intNumber / 5), 0)
dblRest = intNumber - intFünfer * 5
.Value = ""
For intI = 1 To intFünfer
.Value = .Value & "|||| "
Next intI
If dblRest = 0 Then .Value = VBA.Left(.Value, Len(.Value) - 1)
For intI = 1 To dblRest
.Value = .Value & "|"
Next intI
For intI = 1 To Len(.Value) - dblRest Step 5
.Characters(Start:=intI, Length:=4) _
.Font.Strikethrough = True
Next intI
End If
End With
>-----Originalnachricht-----
>.
>
Das Gefühl kenne ich. War auch schon am Schreiben einer
VBA Prozedur bis mir einfiel, das muss doch auch ohne
gehen :-)
Leider gibt es m.E. kein Symbol für 5 Striche (mit einem
durchgestrichenen Querstrich)
Gruß
Frank
Hallo Frank,
die Funktion ist vollkomen für mich ausreichend! Super! Vielen Dank für die
Hilfe!
--
Gruss, Juergen
MegaDank für das Script!
Ich hoffe Du reißt mir aber den Kopf nicht ab, dass ich mittels
Einfachfunktion von Frank die Sache vorerst angehe.
Aber dennoch, vielen herzlichen Dank für Deine Mühe!
--
Gruss, Juergen
> Das ist nicht der Gipfel der Eleganz, geht auch nur wenn
> insgesamt nicht so viele verschiedene Zahlen vorkommen,
> aber vielleicht könntest du ein neues Arbeitsblatt mit
> einer Spalte, wo die "normalen" Zahlen drinstehen und
> einer Spalte wo jeweils die dazugehörigen Striche
> drinstehen machen. Dann könntest du in der Tabelle die
> dich interessiert (ggf. auch mit weißer Schrift, falls du
> die nicht sehen willst) die "normale" Zahl eingeben und
> dann in der Zelle daneben mit einem SVERWEIS Befehl die
> passenden Striche ausgeben... (ansonsten stimme ich arno
> zu...) Viel Glück Nikolaus
Hallo Nikolaus,
die Zahlenreihe ist zu schwierig zu definieren.
Aber dennoch, vielen herzlichen Dank für Deine Mühe!
Den Punkt "Arno" möchte ich folgt beantworten:
Wenn man im (Geschäfts)-Leben alles in schwarz oder weiss teilen könnte,
wäre vieles einfacher. Doch da sind diese blöden Grautöne ;-)
--
Gruss, Juergen
Hi Jürgen,
der Hinweis auf die Berechnung von Regiestunden für
_nicht_im_Auftrag_(Vertrag)_enthaltene_Leistungen_ (nix grau, alles
schwarz auf weiss) wirkt bei mir immer wahre Wunder. Ich würde mal
deinen Vorgesetzten bitten, mit dem Vorgesetzten des Aufmassprüfers
folgenden Punkt zu diskutieren: Welchen Sinn macht es, elektronische
Strichlisten zu erstellen, die von einem Menschen (!) abgezählt werden?
Für mich klingt die Forderung deines Auftraggebers schlicht nach
"durchgeknallter Sachbearbeiter".
Viel Glück
arno
Hallo Arno,
also ich wollte Dich jetzt nicht mit dem Argument auf die Palme bringen
oder einen rechtlich tieggehende Betrachtung auslösen.
Vielmehr hatten wir vor, mittels von 54.879.665 Strichen, welche dann per
Aufmaßlisten beim AG reinflattern genau eine solche Unsinnigkeit zu
verdeutlichen. Es geht eigentlich nicht um die Vorgabe Strichlisten ja/oder
nein, sondern dass das Aufmass eine einheitliche Zählweise aufweist. Also
Strichliste ODER numerische Zahlen. So blöd als es klingt, so ist es halt.
Nachdem aber der Monteur vorort es nachgesehen werden muss, dass er das
Aufmass mischt, bleibt's eben dann im Büro hängen. Darum lieber den
BlackPeter weiterschieben dachten wir mit einem Schuss Ironie. Sollen doch
die AG zählen :-) Es verfolgt alles eigentlich den Sinn, den blöden
Ansichten anhand von diesem Praxisbeispiel an Absurdum zu führen. Jetzt
schau' mer' mol', wie es ankommt, so ne Strichliste von 34 Strichlein
hinter dem Leistungsartikel hat schon was tolles für sich ;-)
Für mich war es jedenfalls nur die [3]+[4] auf der Tastatur.
Danke jedenfalls für die "vertragsrechtlichen Tip's"!
--
Gruss, Juergen
Verstehe. Vergiss nicht, den Zeilenumbruch der Strich-Zellen so
einzustellen, dass er bei 15 od. 35 Strichen umbricht ;)
arno
PS: Telefonieren ist trotzdem billiger. *jetzthaltichaberdenschnabel*
Juergen Bohl schrieb:
> MegaDank für das Script!
> Ich hoffe Du reißt mir aber den Kopf nicht ab, dass ich mittels
> Einfachfunktion von Frank die Sache vorerst angehe.
nein, tue ich nicht ;-)
Ich finde die Formellösung auch sehr gut.
Hatte auch zuerst mit Formeln experimentiert, aber leider kein Zeichen für den
durchgestrichenen 5er Block gefunden.
Wenn die Optik doch eine Rolle spielt, kannst du ja die VBA-Lösung immer noch einsetzen.
> Hatte auch zuerst mit Formeln experimentiert, aber leider kein Zeichen für den
> durchgestrichenen 5er Block gefunden.
Das hatte ich ganz übersehen, dass Du dort so viel Detailliebe einfliessen
hast lassen!
> Wenn die Optik doch eine Rolle spielt, kannst du ja die VBA-Lösung immer noch einsetzen.
Musste das Teil von Dir jetzt doch mal ausprobieren (ok, eher versuchte
es). So legte es mich gleich mal auf die Nase beim Versuch dessen
(Ursache=beschriebene Schwindsucht bei mir in Sachen VBA).
Hatte folgendes gemacht:
Erstellte neues Tabellenblatt und fügte ein Modul ein. In dieses dann per
paste Deinen Code eingefügt. Wenn ich es richtig verstanden habe, müßte der
Bereich A1:A20 betextet werden und die Strichlein ausspucken, oder?
Kannst Du mir da ein wenig auf die Sprünge helfen!?
--
Gruss, Juergen
Juergen Bohl schrieb:
> Das hatte ich ganz übersehen, dass Du dort so viel Detailliebe einfliessen
> hast lassen!
deine Frage lautete:
> z.B. Eingabe numerisch [7] --> Ausgabe/Ausdruck = ||||| ||
> Noch besser wäre natürlich bei Fünferblöckern der traditionelle Querstrich.
Daran hatte ich mich orientiert ;-)
> Hatte folgendes gemacht:
> Erstellte neues Tabellenblatt und fügte ein Modul ein. In dieses dann per
> paste Deinen Code eingefügt. Wenn ich es richtig verstanden habe, müßte der
> Bereich A1:A20 betextet werden und die Strichlein ausspucken, oder?
> Kannst Du mir da ein wenig auf die Sprünge helfen!?
Klicke mit der rechten Maustaste auf den Registerreiter der Tabelle
die du bearbeiten willst und wähle 'Code anzeigen'.
Jetzt bist du im Codemodul der Tabelle. Kopiere die Prozedur in das rechte Fenster.
Die Prozedur wird automatisch aufgerufen, wenn sich Zellen auf dem Tabellenblatt ändern.
Hallo Melanie,
PERFEKT !! in Funktion und Ansicht! :-))
Folgende ergänzende Frage hätte ich noch dazu:
Jetzt wird die numerische Eingabe in z.B. A1 in Strichlein umgewandelt.
Somit sehe ich die orginalziffer nicht mehr. Wie könnte man folgendes
bewerkstelligen:
Numerische Eingabe in Spalte |A|, und Ausgabe der Striche in Spalte |B|?
Vielen Dank nochmals !!
--
Gruss, Juergen
Juergen Bohl schrieb:
> PERFEKT !! in Funktion und Ansicht! :-))
find ich klasse :-)
> Folgende ergänzende Frage hätte ich noch dazu:
> Jetzt wird die numerische Eingabe in z.B. A1 in Strichlein umgewandelt.
> Somit sehe ich die orginalziffer nicht mehr. Wie könnte man folgendes
> bewerkstelligen:
>
> Numerische Eingabe in Spalte |A|, und Ausgabe der Striche in Spalte |B|?
Ich habe die Formellösung in die Prozedur integriert, da dadurch die
Performance etwas schneller wird. Die Ausgabe wird durch
die Offset-Methode um eine Zelle nach Rechts erfolgen:
Private Sub Worksheet_Change(ByVal Target As Range)
' Melanie...@mvps.org | 02.09.2004
Dim rngCell As Range
Dim rngOutput As Range
Dim dblRest As Double
Dim intNumber As Integer
Dim intI As Integer
Set Target = Intersect(Target, Range("A1:A20"))
If Target Is Nothing Then Exit Sub
On Error GoTo HANDLER
Application.EnableEvents = False
For Each rngCell In Target
Set rngOutput = rngCell.Offset(0, 1)
rngOutput.Font.Strikethrough = False
With rngCell
If IsNumeric(.Value) And .Value > 0 Then
dblRest = .Value Mod 5
With rngOutput
.Value = Evaluate("=SUBSTITUTE(REPT(""|""," & _
rngCell.Value & "),""|||||"",""|||| "")")
If dblRest = 0 Then .Value = _
VBA.Left(.Value, Len(.Value) - 1)
For intI = 1 To Len(.Value) - dblRest Step 5
.Characters(Start:=intI, Length:=4) _
.Font.Strikethrough = True
Next intI
End With
End If
End With
Next rngCell
HANDLER:
Application.EnableEvents = True
End Sub
--
na, ...das haste' ja auch Klasse gelöst!
> Ich habe die Formellösung in die Prozedur integriert, da dadurch die
> Performance etwas schneller wird. Die Ausgabe wird durch
> die Offset-Methode um eine Zelle nach Rechts erfolgen:
na, ...und dann haste jetzt gleich noch eine witere Klasse hinterher
gescriptet :-)
Vielen , vielen herzlichen Dank für Deine Profihilfe von dem, der jetzt
*fröhlichvorsichhinpfeifft* !
--
Gruss aus Bayern, Juergen
Juergen Bohl schrieb:
habe noch einen Fehler in der Prozedur aufgetan:
Wenn eine Zahl gelöscht wird, wird der Strichcode nicht mit gelöscht.
Darum habe ich die Prozedur noch etwas geändert:
(Ersetze nur den folgenden With-Block)
With rngCell
intNumber = .Value
dblRest = .Value Mod 5
rngOutput.Value = ""
If IsNumeric(.Value) And .Value > 0 Then
With rngOutput
.Value = Evaluate("=SUBSTITUTE(REPT(""|""," & _
intNumber & "),""|||||"",""|||| "")")
If dblRest = 0 Then .Value = _
VBA.Left(.Value, Len(.Value) - 1)
For intI = 1 To Len(.Value) - dblRest Step 5
.Characters(Start:=intI, Length:=4) _
.Font.Strikethrough = True
Next intI
End With
End If
End With
> Vielen , vielen herzlichen Dank für Deine Profihilfe von dem, der jetzt
> *fröhlichvorsichhinpfeifft* !
dann viel Spaß noch beim pfeiffen :-)
Nochmals ein dickes Dankeschön an Dich!
>> Vielen , vielen herzlichen Dank für Deine Profihilfe von dem, der jetzt
>> *fröhlichvorsichhinpfeifft* !
>
> dann viel Spaß noch beim pfeiffen :-)
...kann nicht mehr, ....der Mund ist schon ganz trocken :o)
--
Gruss, Juergen
ich habe diesen Thread grinsend verfolgt (arbeite auch bei ner
Verwaltung...). Es wäre interessant, bei Gelegenheit zu erfahren, ob die
"Attacke" ihren Zweck erfüllt hat. Du hast es ja dank der Hilfe unserer
Expert/innen köstlich "auf der Spitze treiben" (Zitat eines Klienten von
uns) können. Hat's denn was genützt?
Ingrid
Juergen Bohl schrieb:
Hallo Ingrid,
ob es was nützt, kann ich Dir erst sagen wenn die erste *Kunst*-Rechnung
vom AG bezahlt wurde. Vielmehr wird es das legendäre Aufmassblatt sein,
welches im Querformat in A3 gefaltet mitgegeben wird.
Ich muss Dir sagen, wir als "Stricher" kamen zu dem Schluss, dass es schon
ein wenig mit Kunst zu tun hat. Denn wenn man sein Auge so über
kolonnenartige, ästhetisch filigran angehäufte Zeichenmuster schweifen
läßt, spürt man schon eine gewisse Seelenverwandschaft mit Picasso ;o)
Wir arbeiten gerade daran, wie man mittels geschickter Zahleneingabe, beim
betrachten des Aufmassblattes aus 1 m Entfernung einem grinsenden Smilie
:o) zustande bringt. Da freut sich doch bestimmt der/die, welche/r die
tausend Strichlein zählen muss, oder!?
Also ich werde es berichten, ob wir den AG bekehren konnten oder einen
Oscar vom *Bund der Entbürokratisierung* bekommen *schluck* :o/
--
Gruss, Juergen
Ich glaube, Du verwechselst da ggf. was.
Nach den Regelungen der VOB stehen dem AG die Originalaufmaße zu,
also die der Polier etc. tatsächlich vor Ort so aufgemessen hat,
üblicherweise
in Zusammenarbeit mit dem Architekten.
Computergeschriebene Listen - so übersichtlich sie auch sein mögen, sind
also hier ausdrücklich unerwünscht - die Formulierung "Strichliste" war hier
wohl mißverständlich.
Du machst Dir hier ggf. viel Arbeit vergeblich, wenn Du das auf Krampf mit
Excel hindengelst.
--
Jürgen
"Juergen Klein" <anon...@discussions.microsoft.com> schrieb:
>Juergen Bohl wrote:
>> Hallo zusammen,
>>
>> ich habe da ein etwas ungewöhnliches Problem, na ja vielleicht gibts
>> ja ne Lösung:
>>
>> Wir müssen für einen Auftraggeber Aufmasslisten zur Rechnung abgeben.
>> D.h., das Aufmass existiert bereits als Tabellenblatt, welches auf
>> der Baustelle vom Monteur um die Stck-Zahl der jeweiligen verbauten
>> Teile per Zahl oder Strichliste ergänzt wird.
>>
>> Jetz muss aber das abzugebene Aufmassblatt komplett als Strichliste
>> (Horrorbürokratie) mit zur Rechnung gegeben werden. Jetzt sitzt man da
>> eben, und kritzelt alle Stückzahlen wie beim Schafkopfen auf ein neues
>> Blatt.
>
[.....]
Ich habe den ersten Post verpaßt und hänge mich hier an.
Die Zahl der Teile steht in Spalte A, beginnend mit A1
B1=WENN(ABRUNDEN(A1/5;0)=1;WIEDERHOLEN("|";5)&"
"&WIEDERHOLEN(ZEICHEN(124);REST(A1;5));"")
und runterziehen.
Die obige Formel funktioniert nur bei bis zu 9 Teilen. Lässt sich auf
bis 15 Teile ausweiten, wenn man das letzte "" ín der Formel
entsprechend ersetzt. Bei höheren Teile-Zahlen wäre eine VBA Lösung
in Betracht zu ziehen,
Die Darstellung des 5er Blocks mit den üblichen 4 senkrechten und
einem Querstrich geht meines Wissens nicht (mit VBA evtl. machbar,
aber dann nur mit einem horizontalen Querstrich). Ersatzweise habe ich
deshalb hinter dem 5er Block eine Leerstelle eingefügt, Da könnte man
auch ein & oder sonstiges Trennzeichen einbauen.
Melde Dich mal, ob Du damit grundsätzlich leben kannst, und wenn ja,
wieviele Teile maximal vorkommen.
--
Gruß Eberhard
XL 2000
Hallo Eberhard,
danke für die Post, doch hat sich die Angelegenheit mittels Hilfe von
Melanie bereits bestens behoben:
siehe Message-ID: <2pon6oF...@uni-berlin.de>
--
Gruss, Juergen
Juergen Bohl <if_...@fahr-zur-hoelle.org> schrieb:
nur der Ordnung halber: mein Vorschlag stellte die Zahlen <5 nicht dar
Die Änderung:
C1=WENN(ABRUNDEN(A1/5;0)=1;"||||| ";WENN(ABRUNDEN(A1/5;0)=2;"|||||
||||| ";WENN(ABRUNDEN(A1/5;0)=3;"||||| ||||| |||||
";"")))&WIEDERHOLEN(ZEICHEN(124);REST(A1;5))
deckt 1 bis 19 ab.