Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zahl 1 mindestens einmal in Spaltenbereich vorkommen lassen
#1
Hallo,

ich möchte jeweils vier Zellen einer Spalte überprüfen, ob in mindestens einer dieser Zellen die Zahl 1 steht. Die Zellen wurden nach einem bestimmten Algorithmus generiert und enthalten Werte von 0 bis 4.
Falls keine dieser Zellen den Wert 1 hat, soll eine von ihnen zufällig ausgewählt werden und mit 1 überschrieben werden.
Leider gibt es auch hierbei eine Einschränkung: Die überschriebene Zelle darf nicht die mit dem Wert 0 sein.

In der angehängten Exceltabelle habe ich einen solchen Fall rot markiert, in dem in keiner der vier untereinander stehenden Zellen der Spalte E die 1 vorkommt und daher eine Zelle außer der, die die 0 enthält, ersetzt werden sollte. Es sollte hier also die 3, 4 oder 2 ersetzt werden.

Weiß jemand eine Lösung?

Vielen Dank für die Hilfe!
Colin


Angehängte Dateien
.xlsx   Seq_Dist_CBC2_CBCPSS_Design_excel.xlsx (Größe: 291,76 KB / Downloads: 8)
Antworten Top
#2
Moin Colin,

deine Beschreibung ist mir einfach zu "dünn" als dass ich mich an's coden mache ...
Insbesondere: Wie definieren sich die 4er-Blöcke?
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#3
Wenn ich 2 Beiträge bei 2 Themen sehe, werde ich neugierig und schaue mir das erste Thema an.
Wenn ich dann eine gute Antwort (von Shift-Del), aber kein Feedback des Fragestellers sehe, ist der Fragesteller bei mir unten durch, aber so was von …

(Hat etwas mit guter Kinderstube zu tun)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Danke Ralf
du hast mir mit diesem Hinweis Arbeit erspart, denn ich teile deine Meinung (und die Konsequenzen) zu 100%.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#5
Hi Günther,

(26.05.2017, 16:14)GMG-CC schrieb: Insbesondere: Wie definieren sich die 4er-Blöcke?

wenn ich mir die Daten so ansehe, sind es jeweils immer Blöcke mit 4 aufeinander folgende Zeilen, beginnend in Zeile 2.
Antworten Top
#6
Moin Ralf, danke für den Hinweis;

du, viele andere Helfer und eben auch ich habe zu oft erlebt, dass wir uns aufgrund einer mehr oder weniger "dünnen" Beschreibung des Problems etwas denken, dann ist es aber ganz anders gemeint. Hier kann ich mir zwar denken, dass (ausschließlich) die Spalte_E betrachtet werden soll, aber markiert ist die Spalte_A:E ...

Ich habe mir vorgenommen, möglichst wenig für den Papierkorb zu arbeiten. Darum frage ich erst einmal nach, was WIRKLICH gemeint ist. Ganz zu schweigen davon, wie die (wahrscheinlich) auszuwertenden Zahlen in E zustande kommen. Vielleicht durch Berechnung/Formel. Und dann noch ohne Nachkommastellen angezeigt? ... Wir Helfer kennen diese "Never ending stories" doch zu Genüge. Darum erwarte ich von einem Fragesteller einfach so viele Informationen, dass ich möglichst "verlustfrei" arbeiten kann. Ich weiß, anachronistisch, aber die guten alten Wertvorstellungen haben immer noch ihre Berechtigung.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#7
Moin Ralf, moin Günther,

danke für Euer Feedback! Ich habe auch gerade mit Schrecken gesehen, dass ich bei meiner ersten Frage nicht geantwortet habe. Natürlich verstehe ich auch, dass ihr genaue Informationen braucht, um das Problem zu verstehen und Euch nicht vergeblich Mühe zu machen. Ich bitte um Verzeihung und verspreche, mich zu bessern.

Es handelt sich bei meiner Tabelle um ein Choice-based Conjoint Design, dass in Sawtooth erstellt wurde und dann als csv exportiert wurde. Meine Fragestellung bezieht sich tatsächlich nur auf die Spalte E. Hier hat die Software nach der 'Complete Enumeration' Methode dem Attribut "Timing" Werte von 0-4 zugeordnet. Die Formel, die ich suche würde in Spalte E ab Zeile 10 angewandt werden. In jedem Conjoint Task hat der Befragte vier Konzepte (siehe Spalte C) zur Auswahl, so kommen die Viererblöcke der Spalte E zustande. Ich möchte mit dieser Formel die Werte der Spalte E so ändern, dass in jedem dieser aus vier Auswahlmöglichkeiten bestehenden Choice-Szenarios einmal die Ausprägung "1" des Attributs "Timing" (Spalte E) vorkommt. Die Formel soll prüfen, ob in den jeweils vier Zeilen der Spalte E eine 1 vorkommt. Ist dies nicht der Fall, soll sie eine der drei Zahlen mit 1 überschreiben. Allerdings darf dies nicht die 0 sein, da diese auch ein Sonderfall ist und in jedem Choice Task vorkommen muss.

Ich hoffe, mein Problem wird so klarer. Falls ihr noch mehr Informationen braucht, sagt gerne Bescheid.

Viele Grüße und danke für Eure Antworten
Colin
Antworten Top
#8
Moin Colin,

meinem Motto folgend: "Hilfe zur Selbsthilfe, keine Komplettlösungen" habe ich einen Code geschrieben, der nicht komplett diene Forderung erfüllt.
Entweder überschreibst du in den einzelnen Blöcken eine beliebige Zahl mi der 1 oder du / ein Kollege aus deinem Unternehmen passt den Code entsprechend an ...

Code:
Option Explicit

Sub FindMissingNumber()
  Dim lRow As Long, Status As Boolean
  Dim Ze As Long, rngBlock As Range, c As Range
 
  With UsedRange
     .Interior.Color = xlNone
     .Font.ColorIndex = xlAutomatic
     .Borders(xlEdgeBottom).LineStyle = xlNone
  End With
  lRow = Cells(Rows.Count, 5).End(xlUp).Row
  For Ze = 2 To lRow Step 4
     Set rngBlock = Range(Cells(Ze, 5), Cells(Ze + 3, 5))
     Status = False
     Cells(Ze, 5).Offset(3, 0).Borders(xlEdgeBottom).Weight = xlMedium
     For Each c In rngBlock
        If CInt(c) = 1 Then
           Status = True
           Exit For
        End If
     Next c
     If Not Status Then
        With rngBlock
           .Interior.Color = rgbLightBlue
           .Font.Color = rgbRed
        End With
     End If
  Next Ze
End Sub
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#9
Moin Günther,

vielen Dank für den Code und dass du mir nochmal geholfen hast! Ich führe die Conjoint-Analyse im Rahmen meiner Masterarbeit durch und habe leider noch nie einen derartig aufwendigen Excel-Code gesehen. Wo füge ich den Code denn überhaupt ein? Huh

Viele Grüße
Colin
Antworten Top
#10
Moin Colin,

"aufwendig", na ja ... Ich programmiere fast immer so, dass auch jemand, der aus einer anderen Hochsprache (oft Pascal) kommt, einigermaßen verstehen kann, was da läuft. Über das Stadium der minimalistischen Programmierung bin ich hinaus  Angel.

Du fügst den Code in das Blatt ein, wo die Daten drin sind. Alt-F11, links das Blatt doppelklicken und rechts im großen Editor-Fenster den Code einfügen. Mehr dazu: -> http://www.excel-ist-sexy.de/sub-prozedur-einfuegen/ .


Angehängte Dateien
.xlsm   Seq_Dist_CBC2_CBCPSS_Design_excel.xlsm (Größe: 335,59 KB / Downloads: 3)
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste