Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenfelder in Zellen eintragen

Datenfelder in Zellen eintragen
09.04.2004 17:10:59
Conny
Ich habe eine Funktion die mir ein Datenfeld z.B.(Werte(i)) berechnet nun möchte ich die einzelnen Werte in einen Bereich z.B. (B3:B7) den ich in einer Funktion bestimmt habe eintagen.
in etwa so:
Werte(0) soll in B3
Werte(1) soll in B4
usw.
Kann mir da vielleicht einer Helfen?

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenfelder in Zellen eintragen
09.04.2004 17:22:48
Christoph M
Hi Conny,
was ist das denn für 'ne Funktion?
ohne diese kan icgh da nur in die Glaskugel schaun...
Gruß
Christoph
AW: Datenfelder in Zellen eintragen
09.04.2004 17:38:38
Conny
Public

Function BIN_ZERLEGEN(WERT As String, SYSTEM As String, AUSGABE_BEREICH As Object)
SYSTEM = UCase(SYSTEM)          ' Gross Buchstaben
Dim BIT_Wert(20) As Integer     ' (0, 1)
Dim Wert_now As String          ' Zwischenergebnisse
Wert_now = 0
Wert_now = WANDELN(WERT, False, SYSTEM, "BIN") 'liefert Binärwert als Zeichenkette
For i = 1 To Len(Wert_now)
j = Len(Wert_now) - i
BIT_Wert(j) = Mid(Wert_now, i, 1)
Next i
BIN_ZERLEGEN = WERT
End Function


Bei WERT gebe ich eine Zahl als Zeichenkette ein
SYSTEM ist das verwendete Zahlensystem des WERTs
AUSGABE_BEREICH soll einen Bereich angeben wo die Bitwerte der Binärzahl stehen sollen(jede Zelle einer), die Bitwerte stehen im Feld BIT_Werte(20)
Anzeige
AW: Datenfelder in Zellen eintragen
09.04.2004 17:58:36
Christoph M
Sorry Conny,
da streich ich die Segel.
Deinen Ausdruck "WANDELN" kenn ich so auch nicht und vermute, dass dies abermals eine Public Function ist.
Ich hab die Frage wieder als "Offen" markiert, so dass die anderen erkennen, dass es hier noch was zu tun gibt.
nichts für Ungut.
Gruß
Christoph
AW: Datenfelder in Zellen eintragen
09.04.2004 18:12:00
Conny
Kann man nix machen, trotzdem vielen Dank für deine mühe, vielleicht findet ja noch ein ander(e) ne Lösung für mein Problem.
WANDELN wandelt nur einen WERT aus einem beliebigen Zahlen- SYSTEM in ein beliebiges anderes, hier in "BIN" Binär
Public Function - noch Offen
09.04.2004 18:17:22
Christoph
ok, und damit es die anderen auch merken, markier ich jetzt die Frage für dich nochmal als "Offen" (kleines grünes Häckchen rechs)
gruß
Christoph
Anzeige
AW: Datenfelder in Zellen eintragen
09.04.2004 20:02:58
Conny
Ich glaube das Problem ist einfach, dass ich Zellen nicht aus einer Funktion beschreiben kann, sondern nur aus einem Sub und da bekomme ich mein Feld nicht hin
Bekomme echt zuviel *grrrr*
10.04.2004 01:41:13
Conny
Ich bekomme es einfach nicht hin, ist denn echt keiner da der mir dabei helfen kann?
AW: Bekomme echt zuviel *grrrr*
10.04.2004 08:07:02
andre
hallo conny,
1. richtig erkannt, du kannst eine function nicht veranlassen, ergebnisse woanders hin zu schreiben als wo sie steht. du müsstest also zusätzlich eine feldvariable übergeben, wo der gewünschte index übergeben wird und die formel dann entsprechend oft verwenden.
2. stelle deine function wandeln ein
gruss andre
AW: Bekomme echt zuviel *grrrr*
10.04.2004 12:30:14
Conny
Die Funktion WANDELN macht nicht mehr als eine z.B. HEX-Zahl in eine BIN-Zahl zu wandeln, es würde wenig Sinn machen sie hier rein zu stellen, weil sie wieder eine Unterfunktion verwendet, was die Sache nur unnötig kompliziert machen würde.
Gruß Conny
Anzeige
AW: Bekomme echt zuviel *grrrr*
10.04.2004 09:55:41
Christoph M
Hi Conny,
die Antwort von Andre war genau der Grund, warum ich "die Segel gestrichen habe".
wenn du das ganze in einem "Sub" laufen lassen willst, dann geht das so:
(jetzt mal ohne Umwandlung in "BIN")
deine Zahl (z.B: 10100) steht in der Zelle A1 und du willst in B1, C1, D1, ... deine einzelnen Bits eintragen:
Gruß
Christoph
('ne Rückmeldung wäre nett)
PS: sollte der code unter '97 nicht laufen, dann versuch es mal mit:
Dim Bits() as String, ...
Ich hab selbst kein '97 installiert, unter 2000 funktioniert das fehlerfrei

Option Explicit
Option Base 1

Sub zerlegDat()
Dim Bits(), i As Integer, WERT As String
WERT = Cells(1, 1).Value   'dein Eintrag in "A1"
'Die Größe des Array festlegen:
ReDim Bits(Len(WERT))
'Die Werte in das Array einlesen:
For i = 1 To Len(WERT)
Bits(i) = Mid(WERT, i, 1)
Next i
'die einzelnen Array-Werte in die Tabelle schreiben:
For i = 1 To UBound(Bits)
Cells(1, 1).Offset(0, i) = Bits(i)
Next i
End Sub

Anzeige
AW: Bekomme echt zuviel *grrrr*
10.04.2004 13:50:36
Conny
Hallo Christoph, ich hatte schonmal was sehr ähnliches, das geht auch soweit, aber da kann ich dann nicht bestimmen wo es ausgegeben werden soll, hier nochmal das Program.
Public

Function BIN_ZERLEGEN(WERT As String, SYSTEM As String, AUSGABE_BEREICH As Object)
SYSTEM = UCase(SYSTEM)          ' Gross Buchstaben
Dim BIT_Wert(20) As Integer     ' (0, 1)
Dim Wert_now As String          ' Zwischenergebnisse
Wert_now = 0
Wert_now = WANDELN(WERT, False, SYSTEM, "BIN") 'liefert Binärwert als Zeichenkette
For i = 1 To Len(Wert_now)
j = Len(Wert_now) - i
BIT_Wert(j) = Mid(Wert_now, i, 1)
Next i
AUSGABE_BEREICH = BIT_Wert()   'das Datenfeld soll in den AUSGABE_BEREICH
'geschrieben werden, aber hier fliege ich
'immer aus der Function
BIN_ZERLEGEN = WERT
End Function

===========================================================================
Bei WERT gebe ich eine Zahl als Zeichenkette ein
SYSTEM ist das verwendete Zahlensystem des WERTs
AUSGABE_BEREICH soll einen Bereich angeben wo die Bitwerte der Binärzahl stehen sollen(jede Zelle einer), die Bitwerte stehen im Feld BIT_Werte(20)
WANDELN wandelt nur einen WERT aus einem beliebigen Zahlen- SYSTEM in ein beliebiges anderes, hier in "BIN" Binär
Anzeige
Weitere Hilfe
11.04.2004 01:15:37
Conny
Kann mir vielleicht einer sagen wo ich sonst noch Tips bekommen kann, wenn mir hier keiner Helfen kann, bin echt voll am verzweifeln hier. Conny
noch ein Tipp
11.04.2004 10:25:06
Christoph M
Hi Conny,
wie Andre dir bereits geschrieben hat, ist es nicht möglich mit einer Funktion Einträge in andere Zellen (als eben jene Zelle, in die du die Funktion einträgst) zu füllen. Es wäre auch nicht logisch z.B in B10 eine Funktion einzutragen die den Eintrag von A20 verarbeitet und das Ergebnis in C30 schreibt. was soll denn dann anschließend in B10 stehen?
1.Tipp:
Du kannst natürlich den Code von meinem letzten Beispiel variieren, so dass z.B über eine Inputbox der Ausgabe-Bereich gewählt werden kann. (oder über eine UserForm)
Dies ist aber ein "Sub" und keine Funktion.
2. Tipp:
Wenn es denn eine Funktion sein soll, dann schlage ich vor, du verzichtest auf das Datenfeld und lässt dir von deiner Funktion nur das erste Bit in der betreffenden Zelle berechnen. Wenn du die Funktion entsprechend formulierst, kannst du anschließend wahlweise diese nach unten oder nach rechts ausfüllen bzw. kopieren, um die weiteren Bits darzustellen.

Gruß
Christoph
Anzeige
AW: noch ein Tipp
11.04.2004 22:15:05
Conny
Hallo Christoph,
ich habe auf diesem Weg versucht Deinen Tipp 2 zu verwirklichen, aber es scheitert daran, dass immer alle Zellen neu berechnet werden. Wenn ich was ändere steht an allen Stellen das selbe Bit als Ergebins. Ich denke das Problem ist, dass sich die Active Zelle ja nicht ändert, weißt Du was ich schreiben kann für die gerade berechnete Zelle (statt ActiveCell)?
LG Conny
PS: Ich habe in alle Zellen (E50-T50) die selbe Formel eingetragen (=BIN_ZERLEGEN($D$50;"HEX";$E$50:$T$50))
Public

Function BIN_ZERLEGEN(WERT As String, SYSTEM As String, AUSGABE_BEREICH As Object)
SYSTEM = UCase(SYSTEM)          ' Gross Buchstaben
Dim BIT_Wert(20) As Integer     ' (0, 1)
Dim Wert_now As String          ' Zwischenergebnisse
Wert_now = 0
Wert_now = WANDELN(WERT, False, SYSTEM, "BIN") 'liefert Binärwert als Zeichenkette
For i = 1 To Len(Wert_now)
j = Len(Wert_now) - i
BIT_Wert(j) = Mid(Wert_now, i, 1)
Next i
x = (Len(Wert_now) - 1) - (ActiveCell.Column - AUSGABE_BEREICH.Column)
BIN_ZERLEGEN = BIT_Wert(x) ' x Werte von (Länge-1) bis 0
End Function

Anzeige
Bin auf gutem Weg
11.04.2004 22:57:52
Conny
Habe mal in einem anderen Forum nachgefragt und da hat mir jemand gesagt ich soll sogenannte Matrix-Formeln verwenden, dies scheint die Lösung des Problems, ganz läuft es noch nicht, aber ich denke ich bekomme es jetzt hin, wenn es soweit ist werde ich Dir das mal schicken.
LG Conny
PS: mach Dir erstmal nicht mehr soviel gedanken wegen mir, falls ich nochmal Hilfe brauche melde ich mich
Es läuft :-)
11.04.2004 23:22:56
Conny
Es läuft eigentlich habe ich am Programm fast nix geändert, das Geheimnis war die Tastenkombination Strg+ Shift + Enter
Vielen Dank an alle die sich bemüht haben.
Wünsche noch einen Frohen Ostermontag
' ===========================================================
Public

Function BIN_ZERLEGEN(WERT As String, SYSTEM As String)
' Achtung ! Zur Anwendung !
' AUSGABE_BEREICH markieren und Strg + Shift + Enter drücken
' gesammte Formel ist in geschweiften Klammern eingeschlossen
'____________________________________________________________
SYSTEM = UCase(SYSTEM)  ' Gross Buchstaben
Dim Wert_now As String  ' Zwischenergebnisse
Dim BIT_Wert As Variant ' Variant !
Wert_now = 0
Wert_now = WANDELN(WERT, False, SYSTEM, "BIN") 'liefert Binärwert als Zeichenkette
ReDim BIT_Wert(Len(Wert_now))
For i = 1 To Len(Wert_now)
BIT_Wert(i - 1) = Mid(Wert_now, i, 1)
Next i
BIN_ZERLEGEN = BIT_Wert
End Function

Anzeige
Hurra! - danke, für die Rückmeldung (o.T.)
12.04.2004 07:12:16
Christoph M
AW: Datenfelder in Zellen eintragen
09.04.2004 18:25:31
tobi
Hi conny, hi christoph
Ist "wandeln" sowas ähnliches wie "Hexinbin" oder "dezinbin" oder "oktinbin" ??
AW: Datenfelder in Zellen eintragen
09.04.2004 18:29:43
Conny
Ja das ist es, aber egal was rein kommt, es kommt immer BIN raus. Als ein Text der mit der MID-Funktion zerlegt wird.
AW: Datenfelder in Zellen eintragen
09.04.2004 18:47:33
tobi
würde das gerne wieder als "offen " markieren, weiss aber nicht wie,
:-(
Trotzdem noch ein schönes osterfest
AW: Datenfelder in Zellen eintragen
09.04.2004 18:52:02
Conny
Ich bin dann erstmal wieder Offline, wünsche allen ein frohes Osterfest, würde mich freuen wenn einer trotzdem Zeit findet sich mein Problem genauer anzusehen. Vielen Dank im Vorraus.
Gruß Conny
AW: Datenfelder in Zellen eintragen
09.04.2004 18:54:27
tobi

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige