PDA

Vollständige Version anzeigen : VBA Zahlen zuordnen


entilzha
26.08.2018, 09:20
Hallo, ich habe ein kleines/großes Problem.
Ich habe in A2 bis A8 eine Reihe von unterschiedlichen Zahlen. Diese möchte ich zwischen F2 und J2 nach der Vorgabe zwischen D2 und E2 zuordnen.
Die Zahlen die nicht zugeordnet werden können, bleiben einfach über.

Ich möchte das gern per VBA lösen, hoffe die Bsp. Datei erklärt was ich meine

Danke für die Hilfe

Klaus-Dieter
26.08.2018, 09:24
Hallo,

ein Wunschergebnis in deiner Datei wäre sicher hilfreich.

Klaus-Dieter
26.08.2018, 09:26
Hallo,

meinst du das so?:

<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" style="font-family:Calibri,Arial; font-size:11pt; background-color:#ffffff; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:35px;" /><col style="width:35px;" /><col style="width:35px;" /><col style="width:35px;" /><col style="width:35px;" /><col style="width:35px;" /><col style="width:35px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td><td >E</td><td >F</td><td >G</td><td >H</td><td >I</td><td >J</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >Werte</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td colspan="5" style="text-align:center; ">Hier zuordnen</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="text-align:right; ">5</td><td >&nbsp;</td><td style="font-weight:bold; ">Kategorie 1</td><td style="font-weight:bold; text-align:center; ">1</td><td style="font-weight:bold; text-align:center; ">20</td><td style="background-color:#e2efda; text-align:right; ">5</td><td style="background-color:#e2efda; text-align:right; ">12</td><td style="background-color:#e2efda; text-align:right; ">16</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="text-align:right; ">12</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:right; ">16</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:right; ">21</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="text-align:right; ">34</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td style="text-align:right; ">38</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td style="text-align:right; ">45</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4.8 </a>

Hajo_Zi
26.08.2018, 09:26
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern. Ich führe keine Liste unter welchem Dateinamen ich die Datei gespeichert habe.

Im Forum kann der Beitrag als erledigt markiert werden. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

entilzha
26.08.2018, 09:34
@Klaus-Dieter ja genau
@Hajo_Zi der eine oder andere vermeidet xlsm zu öffnen, deswegen nur eine xlsx

Klaus-Dieter
26.08.2018, 09:47
Hallo,

da versuche es mal mit diesem Makro im Modul des Tabellenblattes:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim intSpalte As Integer
Dim intZeile As Integer
intSpalte = 5
If Target.Column = 5 Then
For intZeile = 2 To 8
If Cells(intZeile, 1) >= Cells(Target.Row, 4) And Cells(intZeile, 1) <= Cells(Target.Row, 5) Then
intSpalte = intSpalte + 1
Cells(Target.Row, intSpalte) = Cells(intZeile, 1)
End If
Next intZeile
End If
End Sub

entilzha
26.08.2018, 10:00
Danke Klaus-Dieter, wie muss das aussehen, wenn es als ganze normales Sub ausführbar wäre zb. per Button.

Klaus-Dieter
26.08.2018, 10:08
Hallo,

da war ein Fehler drin.

entilzha
26.08.2018, 10:22
Nachtrag, die Target.Column Variable ist nicht deklariert

Klaus-Dieter
26.08.2018, 11:00
Hallo,

so sollte es funktionieren:

Private Sub CommandButton1_Click()
Dim intSpalte As Integer
Dim intZeile As Integer
Dim intZiZeile As Integer
For intZiZeile = 2 To 8
intSpalte = 6
For intZeile = 2 To 8
If Cells(intZeile, 1) >= Cells(intZiZeile, 4) And Cells(intZeile, 1) <= Cells(intZiZeile, 5) Then
Cells(intZiZeile, intSpalte) = Cells(intZeile, 1)
intSpalte = intSpalte + 1
End If
Next intZeile
Next intZiZeile
End Sub

entilzha
26.08.2018, 11:40
Dankeschön, funktioniert tadellos
Noch einen schönen Sonntag