Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte per Makro in benachbarte Zelle eintragen

Werte per Makro in benachbarte Zelle eintragen
24.11.2013 21:59:45
Howard
Hallo,
habe folgende Tabelle:
A B C D
1 1 50 0
3 0 54 0
4 0 55 1
7 1 58 1
8 0 60 0
9 1 61 1
10 0 64 1
15 1 68 0
18 0 69 0
20 1 70 1
Nun soll durch einen Klick auf einen Makro, auf das ein Makro gelegt ist,
Folgendes geschehen:
Bei den Zahlen 3, 4, 10, 15, 54, 58, 61 und 69 soll in den benachbarten
Zellen daneben der Wert 1 eingetragen werden.
Beispiel für Zahl 3: 3 steht in Zelle A2, also soll 1 in Zelle B2
eingetragen werden.
In allen anderen Zellen soll der Wert 0 eingetragen werden.
Das Makro muß also zunächst einmal überprüfen ob die Zahlen 3,4,10 usw.
in Spalte A oder in Spalte C stehen und dann in der jeweiligen Nachbarzelle
1 eintragen und zusätzlich in allen anderen Nachbarzellen den Wert 0
eintragen.
Ich hoffe, ich habe die Problemstellung klar definiert und möchte noch
hinzufügen, um mögliche Mißverständnisse auszuschließen, daß die
aufgelisteten Zahlen NICHT in ein Feld in dem Tabellenblatt eingegeben werden
müssen.
Wäre über eine zum Erfolg führende Antwort sehr dankbar, da ich ziemlich
VBA-unerfahren bin. Kann allenfalls vermuten, daß SVERWEIS oder WENN oder
INSERT irgendwie in dem Makro auftauchen.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte per Makro in benachbarte Zelle eintragen
24.11.2013 23:46:23
Franc
so zum Beispiel
In jede Zelle daneben was dem entspricht wird eine 0 eingetragen und alle anderen Zellen werden auf 0 gesetzt.
Wenn er nicht bei der 1. Zeile anfangen soll, musst du das anpassen.
For Each a In Range("A1:A" & lLetzteA)
ansatt A1 eben A5 und für das 2. anstatt C1 auch einen anderen Wert.
Sub Werte() Dim lLetzteA As Long, lLetzteC As Long, a As Range Application.ScreenUpdating = False 'letzte befüllte Zelle in Spalte A und C ermitteln lLetzteA = Cells(Rows.Count, 1).End(xlUp).Row lLetzteC = Cells(Rows.Count, 3).End(xlUp).Row 'von A1 bis zur letzten Zeile For Each a In Range("A1:A" & lLetzteA) Select Case a ' wenn der Wert einem von diesen entspricht Case Is = 3, 4, 10, 15, 54, 58, 61, 69 'die Zelle daneben auf 0 a.Offset(0, 1) = 0 ' für alle anderen Werte ' Case Else + die 2 Zeilen danach löschen wenn das nicht gewünscht ist Case Else ' den Wert und die Zelle daneben auf 0 a = 0 a.Offset(0, 1) = 0 End Select Next For Each a In Range("C1:C" & lLetzteC) Select Case a Case Is = 3, 4, 10, 15, 54, 58, 61, 69 a.Offset(0, 1) = 0 Case Else a = 0 a.Offset(0, 1) = 0 End Select Next Application.ScreenUpdating = True End Sub

Anzeige
AW: Werte per Makro in benachbarte Zelle eintragen
25.11.2013 16:06:00
Howard
Hallo Franc,
Danke für die Mühe. Allerdings ist Dir ein kleiner Fehler unterlaufen. Ist aber nicht weiter schlimm.
Hab ein bißchen herumexperimentiert.
Sub Werte()
Dim lLetzteA As Long, lLetzteC As Long, a As Range
Application.ScreenUpdating = False
'letzte befüllte Zelle in Spalte A und C ermitteln
lLetzteA = Cells(Rows.Count, 1).End(xlUp).Row
lLetzteC = Cells(Rows.Count, 3).End(xlUp).Row
'von A1 bis zur letzten Zeile
For Each a In Range("A1:A" & lLetzteA)
Select Case a
' wenn der Wert einem von diesen entspricht
Case Is = 3, 4, 10, 15, 54, 58, 61, 69
'die Zelle daneben auf 0
a.Offset(, 1) = 1
' für alle anderen Werte
' Case Else + die 2 Zeilen danach löschen wenn das nicht gewünscht ist
Case Else
' den Wert und die Zelle daneben auf 0
a = 0
a.Offset(, 1) = 0
End Select
Next
For Each a In Range("C1:C" & lLetzteC)
Select Case a
Case Is = 3, 4, 10, 15, 54, 58, 61, 69
a.Offset(, 1) = 1
Case Else
a = 0
a.Offset(, 1) = 0
End Select
Nach Offset muß (, 1) = 1 stehen, anstatt (0, 1).

Anzeige
AW: Werte per Makro in benachbarte Zelle eintragen
25.11.2013 23:19:20
Franc
Ja jain ^^
offset(Zeile,Spalte)
da darf ruhig 0,1 stehen, weil ich in der selben Zeile bleiben will nur 1 spalte weiter recht aber hatte das mit der 1 vergeigt die da rein soll ^^ (hatte = 0 geschrieben aber das hast ja durch 1 ersetzt)

wie ich das sehe ...
26.11.2013 08:22:55
Matthias
Hallo
Zitat:
(hatte = 0 geschrieben aber das hast ja durch 1 ersetzt)
Genau das habe ich ja in meinem Posting richtig gestellt.
Das hat den Howard ja aber nicht interessiert (keine Rückmeldung).
Nachdem er ca 9,5 Std nach meinem Beitrag auf Deinen Beitrag geantwortet hat
tut er nun so als ob ihm das gerade mal eingefallen wäre, obwohl er doch schrieb:
Zitat:
Wäre über eine zum Erfolg führende Antwort sehr dankbar, da ich ziemlich VBA-unerfahren bin.
Und obwohl Du ihm das so rüberbringst Offset(0, 1)(was ja auch richtig ist)
weiß doch der noch so ziemlich VBA-Unerfahrene Howard plötzlich
das man auch Offset(, 1) schreiben kann.
Der letzte Satz in seinem Posting war übrigens:
Nach Offset muß (, 1) = 1 stehen, anstatt (0, 1)
Ein Schelm der Böses danbei denkt!
MfG Matthias

Anzeige
AW: wie ich das sehe ...
26.11.2013 21:36:28
Howard
Hallo Matthias,
möchte mal einiges klarstellen, da Du ja doch so ziemlich angefressen scheinst, wie ich dem Tonfall
Deines Postings entnehme:
1.) Du hast, genau wie Franc oder generell allen, die sich Zeit nehmen und die Mühe machen zu
antworten, ein Bier gut bei mir.
2.) zu "9,5 Stunden nach meinem Beitrag": Ich habe beruflich bedingt nur wenig Freizeit und
kann auch nur einen Bruchteil davon für Computertätigkeiten abzweigen.
3.) Ich hab auf Deinen Link geklickt, das Beispiel heruntergeladen, und hab mich sehr gefreut, weil
es funktioniert hat. Dann hab ich eine neue Excel-Mappe angelegt, den gleichen Text benutzt,
aber da hat es auf einmal nicht mehr geklappt. Woran das liegt weiß ich bis jetzt nicht.
Jedenfalls hab ich es dann mit Franc´s Posting versucht und nachdem ich ein bißchen
herumexperimentiert hab, hat es dann auch geklappt. Mit Offset(0, 1) hat es mir anfangs
einige Daten mit 0 überschrieben, die ich dann manuell wieder eintippen durfte. Erst als ich
es mit Offset (, 1) versuchte, hat´s endlich geklappt.
Gruß Howard

Anzeige
Wenn eine Angabe numerisch verlangt wird, ...
27.11.2013 13:05:20
Luc:-?
…sie aber optional ist, wird bei ihrem Weglassen automatisch 0 verwendet. Also muss der ÜberschreibungsFehler an etwas Anderem, bspw generell falsches Offset oder falsche AusgangsZelle, gelegen haben.
Gruß Luc :-?

AW: Werte per Makro in benachbarte Zelle eintragen
25.11.2013 06:28:52
Matthias
Hallo Howard
vorher:
Tabelle1

 ABCD
11 50 
23 54 
34 55 
47 58 
58 60 
69 61 
710 64 
815 68 
918 69 
1020 70 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Option Explicit
Sub ml()
Dim RnG As Range
For Each RnG In Tabelle1.UsedRange.Cells
With RnG
If .Column = 1 Or .Column = 3 Then
Select Case .Value
Case Is = 3, 4, 10, 15, 54, 58, 61, 69
.Offset(, 1) = 1
Case Else
.Offset(, 1) = 0
End Select
End If
End With
Next
End Sub



Nachher:
Tabelle1

 ABCD
110500
231541
341550
470581
580600
690611
7101640
8151680
9180691
10200700


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
Korrektur ...
25.11.2013 06:48:00
Matthias
Hallo
UsedRange.Cells war keine gute Idee. Bitte verwerfen.
Definiere für Deinen Bereich einen Namen.
Diesen sprichst Du dann im Code an.
https://www.herber.de/bbs/user/88240.xls
Gruß Matthias

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige