Makro-Lösung
Hallo Frank,
die Lösung von Reinhard ist super, wenn Du auf die Buchstaben verzichten kannst. Allerdings muß unter Extras/Add-Ins… noch das „Analysis ToolPak“ eingebunden werden, sonst funktioniert´s nicht. Da sind noch viele andere Funktionen drin, die dann auch in der Formelauswahl (Gleichheitszeichen oben links über den Tabellen) zu sehen sind.
Hier nun noch ein Makro, das die Funktionalität auf die Buchstaben ausdehnt. Der ganze Block unten muß nur in ein frisches VBA-Modul innerhalb des Dokuments eingefügt werden ([Alt]+[F11], dann im Projekt-Explorer mit der rechten Maustaste ein Modul hinzufügen).
Um eine Beispieltabelle zu erhalten, das erste Makro ausführen (entweder mit dem Cursor in den Code gehen und [F5] drücken oder von Excel aus über Extras/Makro/Makros…
Vielleicht ist der Aufwand für das Problem etwas zu hoch, aber ich weiß ja nicht, wie wichtig die Aufgabe ist. Außerdem sehe ich immer auch die Möglichkeit, die Lösung als Tip für andere Geschichten zu verwenden. In diesem Sinne hier der Code:
Option Explicit
Sub Beispieltabelle\_bauen()
'Kristian Zarse für Wer-Weiss-Was.de, 03.12.02
'Artikel: http://www.wer-weiss-was.de/cgi-bin/forum/showarticle.fpl?ArtikelID=1368526
'zugehörige Funktionen: KombiVari(), Bitbreite(), Auffuellen()
ActiveWindow.DisplayGridlines = False
Range("B2").FormulaR1C1 = "strBuchstabenfolge"
Range("B3").FormulaR1C1 = "booMSB"
Range("B4").FormulaR1C1 = "strNullzeichen"
Range("B5").FormulaR1C1 = "booBinaer"
Range("B7").FormulaR1C1 = "intZahl"
Range("C2").FormulaR1C1 = "ABC"
Range("C3").FormulaR1C1 = "TRUE"
Range("C4").FormulaR1C1 = "."
Range("C5").FormulaR1C1 = "FALSE"
Range("D2").FormulaR1C1 = "=RC[-1]"
Range("D3").FormulaR1C1 = "FALSE"
Range("D4").FormulaR1C1 = "."
Range("D5").FormulaR1C1 = "FALSE"
Range("E2").FormulaR1C1 = "=RC[-2]"
Range("E3").FormulaR1C1 = "FALSE"
Range("E4").FormulaR1C1 = ""
Range("E5").FormulaR1C1 = "TRUE"
Range("B8").FormulaR1C1 = "0"
Range("C8").FormulaR1C1 = "=kombivari(R2C,RC2,R3C,R4C,R5C)"
Range("D8").FormulaR1C1 = "=kombivari(R2C,RC2,R3C,R4C,R5C)"
Range("E8").FormulaR1C1 = "=kombivari(R2C,RC2,R3C,R4C,R5C)"
Range("G2").FormulaR1C1 = "Notwendig. Eine beliebige Zeichenkette."
Range("G3").FormulaR1C1 = "Optional. Leer bedeutet ""FALSE""."
Range("G4").FormulaR1C1 = "Optional. Leer ist leer."
Range("G5").FormulaR1C1 = "Optional. Leer bedeutet ""FALSE""."
Range("G7").FormulaR1C1 = "Notwendig. Eine ganze Zahl zwischen -32768 und 32767."
Range("G8").FormulaR1C1 = "Es können also Zeichenketten bis 16 Zeichen Länge verarbeitet werden."
Columns("B:B").EntireColumn.AutoFit
Range("C8:E9").FillDown
Range("B9").FormulaR1C1 = "=R[-1]C+1"
Range("B9:E40").FillDown
With Range("B8:E40")
.Font.Name = "Courier New"
.Font.Size = 10
End With
With Range("B2:E5,B7,B8:E40")
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlThin
End With
Range("C2:E5").HorizontalAlignment = xlCenter
Range("B2,B7").Interior.ColorIndex = 36
Range("B3:B5").Interior.ColorIndex = 34
End Sub 'Beispieltabelle\_bauen
Function KombiVari(ByVal strBuchstabenfolge As String, \_
intZahl As Integer, \_
Optional booMSB As Boolean, \_
Optional strNullzeichen As String, \_
Optional booBinaer As Boolean) \_
As String
'Kristian Zarse für Wer-Weiss-Was.de, 03.12.02
'Artikel: http://www.wer-weiss-was.de/cgi-bin/forum/showarticle.fpl?ArtikelID=1368526
'zugehörige Funktionen: KombiVari(), Bitbreite(), Auffuellen()
Dim n As Integer
Dim l As Integer
Dim i As Integer
Dim k As String
l = Len(strBuchstabenfolge)
n = Bitbreite(intZahl, l)
'Wenn die gelieferte Zeichenkette kürzer ist als die Bitbreite der gelieferten
'Zahl, wird die Zeichenkette vorn bzw. hinten mit der Tilde aufgefüllt.
If l intZahl
If intMinimum \> i Then Bitbreite = intMinimum Else Bitbreite = i
End Function 'Bitbreite
Function Auffuellen(strZeichenkette As String, \_
intLaenge As Integer, \_
strFuellzeichen As String, \_
Optional booVoranstellen As Boolean) \_
As String
'Kristian Zarse für Wer-Weiss-Was.de, 03.12.02
'Artikel: http://www.wer-weiss-was.de/cgi-bin/forum/showarticle.fpl?ArtikelID=1368526
'zugehörige Funktionen: KombiVari(), Bitbreite(), Auffuellen()
Dim add As String
Dim i As Integer
add = ""
For i = Len(strZeichenkette) + 1 To intLaenge
add = add & strFuellzeichen
Next i
If booVoranstellen Then
Auffuellen = add & strZeichenkette
Else
Auffuellen = strZeichenkette & add
End If 'booVoranstellen
End Function 'Auffuellen
Kristian