bestimmte Anzeige einer Zelle
#1
Ich bin bin blutiger Anfänger und habe folgendes Problem:
Ich kopiere die Daten (hier nur die Daten der USA) von der Homepage:
"https://gisanddata.maps.arcgis.com/apps/dashboards/bda7594740fd40299423467b48e9ecf6" in
Zelle A4-A8.
Dann kopiere ich die Zelle A8 nach B4.
Jetzt markiere ich die Zelle B4 und führe den Befehl "Text in Spalten mit ":"aus.
Anschließend stehen in der Zelle C6 zwei Zahlen durch "|" getrennt.
Danach führe ich noch einmal den Befehl "Text in Spalten" mit "|" in Zelle C4 aus.
Jetzt sieht es so aus, als befinden sich in den Zellen C4 und D4 jeweils eine "Zahl".
Jetzt möchte ich in Zelle C10 die Summe C4:C10 erhalten oder in Zelle C10 die Zelle angezeigt
bekommen, in der sich irgendwelche Daten befinden.
Hat jemand eine Idee????


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 9,73 KB / Downloads: 10)
Antworten Top
#2
Hola,

lade bitte eine Exceldatei hoch. 
Niemand außer dir weiß welche Daten du genau kopierst und was in den Zellen steht.
Gruß,
steve1da
Antworten Top
#3
Wenn du in C10 eine Formel eingibst die C10 beinhaltet bekommst du einen Zirkelbezug.

Code:
=INDEX(C4:C9;VERGLEICH("*";C4:C9;0))
C4 und D4 kannst du aber direkt ermitteln, ganz ohne Text-in-Spalten:
Code:
=WECHSELN(GLÄTTEN(TEIL(WECHSELN(TEIL($A8;SUCHEN(ZEICHEN(160);$A8)+1;99);"|";WIEDERHOLEN(" ";999));SPALTE(A1)*999-998;999));".";"")
Antworten Top
#4
Hallo steve1da,
vielen Dank für die schnelle und kompetente Hilfe. Jetzt habe ich schon wieder ein Problem.
Dein Vorschlag funktioniert prima, aber jetzt steht in meiner Tabelle 2 in den leeren Zellen eine
Formel und es funktioniert nicht mehr.
Ich kopiere mir die Daten von
https://gisanddata.maps.arcgis.com/apps/...7b48e9ecf6 und
speichere (erstmal zum testen) in Tabelle 4.
Dann kopiere ich die Spalte A aus Tabelle 4 in Spalte A in Tabelle 1.
Jetzt führe ich nacheinander alle 4 Makros aus (Blaue Schalter).
In Tabelle 2 sollten nun in Zeile 21 die Zahlen stehen.
Kannst du mir noch einmal helfen ?


Angehängte Dateien
.xlsm   Start_Test1.xlsm (Größe: 33,89 KB / Downloads: 6)
Antworten Top
#5
Hallo, in meiner Tabelle hat sich ein Fehler eingeschlichen.
Falsch   Zelle C21"=INDEX(D4:D20;VERGLEICH("*";D4:D20;1))"
Richtig   Zelle C21"=INDEX(D4:D20;VERGLEICH("*";D4:D20;0))"
Aber trotz Berichtigung erhalte ich kein Ergebnis in Zelle C21.
Kurios finde ich, (nach Ausführen der Makros 1-4) wenn ich in Tabelle2 die Zelle C2 markiere und mit dem kleinen Kreuz rechts unten in der Zelle bis auf Zelle C10 ziehe, erhalte ich das gewünschte Ergebnis.
Nur Spalte M und Spalte N liefern ohne dazutun das Ergebnis. Sad
Anbei noch einmal die Tabelle in der ich die Makros schon ausgeführt habe.
ciao


Angehängte Dateien
.xlsm   Start_Test1.xlsm (Größe: 34,57 KB / Downloads: 8)
Antworten Top
#6
Hallo



ich habe mal zwei Lösungen im Angebot, und bin überzeugt die zweite ist ganz sicher die bessere.  Da läuft nur noch ein einziges Makro!

Bei der 1. Lösung habe ich nur den Macrorecorder Code von Select bereinigt. Als ich die Funktion dann begriff hat es micht gestört wie
umständlich man da an die Daten kommt. Und wie leicht man dabei auch mal die falsche Reihenfolge drücken kann.

Die zweite Lösung mit der Endung "F2" hat nur noch einen Button und keine Formeln mehr. Die brauche ich bei VBA überhaupt nicht.
In Tabelle 2 liste ich die Daten Tag für Tag untereinander, brauche aber in Zeilel1 zum Zuweisen der Werte die US Ländernamen aus Tabelle1.
Die fehlenden Ländernamen bitte selbst noch ergänzen.   Würde mich freuen wenn diese Lösung besser ist und gefällt.

mfg  Gast 123


Angehängte Dateien
.xlsm   Start_Test1.xlsm (Größe: 28,77 KB / Downloads: 6)
.xlsm   Start_Test1 F2.xlsm (Größe: 25,87 KB / Downloads: 16)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Bernd.K
Antworten Top
#7
Hi,
kannst du mir das Makro auch für eine andere Tabelle schreiben?
ciao
Antworten Top
#8
Hallo

ich denke ja, dazu müsste ich die Datei aber sehen und wissen wie die Lösung aussehen soll.

mfg Gast 123
Antworten Top
#9
Hallo,
eigentlich ist es fast die Tabelle, die ich schon einmal hochgeladen habe.
Es sind ein paar Ländernamen hinzugekommen und ich habe die Tabelle mit meinen bescheidenen Excelkenntnissen modifiziert.

In Tabelle 2 Zeile 24 stehen (ach der Ausführung von Makro1-4) nun die Daten.
Es wäre nur schöner, wenn die ganzen Nullen nicht wären und die Daten als Zahlen erscheinen.
Kannst du mir dann noch verraten (an Beispiel einer Zelle) wie man den Inhalt einer Zelle mit VBA in eine Zahl verwandelt.
ciao


Angehängte Dateien
.xlsm   Start_Test22.xlsm (Größe: 41,65 KB / Downloads: 4)
Antworten Top
#10
Hallo

Sorry das ich ganz höflich etwas dazu sage, und das auch ehrlich meine:  ich arbeite äusserst ungern  "für die Katz!"  Das lehne ich ab!!

Das heisst NICHT das ich nicht bereit bin zu helfen, aber in meinem Beispiel mit Endung "F2"  ist doch ein fertiges Makro mit nur 1 Button!!!
Dazu in einer Version wo ich den gesamten Quatsch mit Select, Cut Cells, und anderen Makrorecorder Zwischenschritten überhaupt nicht brauche!
Da frage ich mich zu Recht verdutzt warum du davon keinen Gebrauch machen willst und bei der alten Version bleibst????

Wenn es nur daran lag in Tabelle2 die Daten Kuntertbunt im Blatt zu verteilen und sie noch in Zeile 24 aufzulisten. das hätten wir ändern können!
Aber ich bin NICHT bereit ein Recordermakro noch mal umzuschreiiben, damit es trotzdem ein Recordermakro bleibt.  Das ist für mich unsinniges Arbeiten!

Die Frage wie ich per VBA den Zahlen Text in echte Zahlen umgewandelt habe ist doch in meinem Makro klar erkennbar, und mit Kommentaren dokumentiert. Wenn du den letzten Befehl, die Spalte 2 in Tabelle4 wieder zu löschen, mal deaktivierst, siehst du es optisch in der Tabelle4, an der Spalte B! Ich kopiere den gesamten Datensatz, egal wieviele Länder es sind, mit Zeilenversatz in die Spalte B.  So das die Zahl dem Land zugeordnet ist! Dann entferne ich mit Replace den Text "Total:" und die Punkte als Trennzeichen in den Zahlen. Jetzt stehen dort Zahlen durch "|" getrennt. Im Makro wandele ich den immer noch vornhandenen Zahlen Text dann durch die Syntacs in echte Zahlen um.  Das ist alles.

Das Makro ist auf unbegrenzte Länder Anzahl ausgelegt.  Willst du für Tabelle2 lieber bei Formeln bleiben müsste man meinen Code wie unten ändern, und die Nullen kann man unter den Excel Optionen manuell deaktivieren. Dann werden sie nicht mehr angezeigt!  Was ist mit Tabelle3?  Wird die benötigt? Die Daten kann man von Tabelle1 aus rüberkopieren!  Was der untere Code jetzt automatisch macht!  Ich habe ihn auf dein letztes hochgeladenes Beispiel geändert.  An den Recorder Code gehe ich aber nicht dran!

mfg  Gast 123

Code:
Sub Total_Auswertung()
Dim AC As Range, lz1 As Long
Dim AJ As Range, i As Integer
Dim Tb2 As Worksheet, lz2 As Long
Dim Tb4 As Worksheet, lz4 As Long
Set Tb2 = Worksheets("Tabelle2")
Set Tb4 = Worksheets("Tabelle4")
Application.ScreenUpdating = False

'LastZelle in Tabelle 2+4 suchen
lz4 = Tb4.Cells(Rows.Count, 1).End(xlUp).Row
lz2 = Tb2.Cells(Rows.Count, 1).End(xlUp).Row + 1

'Total Daten nach Spalte B kopieren, mit Zeilenversatz!
Tb4.Range("A8:A" & lz4).Copy Tb4.Range("B4")
'Total durch Replace in Zahl wandeln (mit "|" Zeichen
Tb4.Columns(2).Replace "Totals: ", ""
Tb4.Columns(2).Replace ".", ""

With Worksheets("Tabelle1")
     'LastZelle in Tabelle1 für US Ländernamen
     lz1 = .Cells(Rows.Count, 1).End(xlUp).Row
     'Total Summen Zelle A2+A4 manuell kopieren
     .Range("A2").Value = Tb4.Range("A2") * 1
     .Range("A4").Value = Tb4.Range("A4") * 1
   
    'Total in Tabelle1 auflisten  (nach Us Ländernamen)
     For Each AC In .Range("A5:A" & lz1)
       'Total Daten in Tabelle4 suchen  (nach Us Ländernamen)
       For Each AJ In Tb4.Range("A9:A" & lz4)
           If AC.Value = AJ.Value Then
              AC.Offset(0, 2) = Left(AJ.Cells(1, 2), InStr(AJ.Cells(1, 2), "|") - 1) * 1
              AC.Offset(0, 3) = Mid(AJ.Cells(1, 2), InStr(AJ.Cells(1, 2), "|") + 1) * 1
           End If
       Next AJ
     Next AC
End With
Tb4.Columns(2).ClearContents

'**  Falls gewünscht in Tabelle3 kopieren
With Worksheets("Tabelle1")
    .Range("A1:A" & lz1).Copy Worksheets("Tabelle3").Range("A1")
    .Range("C5:D" & lz1).Copy Worksheets("Tabelle3").Range("B5")
End With
''' dieser Teil kann gelöscht werden
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Bernd.K
Antworten Top


Gehe zu:


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