Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Spalten in mehreren Blättern durchsuchen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Spalten in mehreren Blättern durchsuchen (5936 mal gelesen)
hoppel66
Mitglied
kfm. Angestellter

Sehen Sie sich das Profil von hoppel66 an!   Senden Sie eine Private Message an hoppel66  Schreiben Sie einen Gästebucheintrag für hoppel66

Beiträge: 4
Registriert: 02.02.2012

erstellt am: 02. Feb. 2012 16:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Ich hab heute dieses Forum entdeckt, bei der Suche nach einer Problemlösung.
Leider hab ich auch hier nicht die Lösung finden können (falsche Suchbegriffe genutzt?).

Es geht um folgendes:
ich habe eine Exceldatei (Excel 2010) mit mehreren Tabellenblättern (August 2011 bis Februar 2012).
In diesen Tabellenblättern gibt es eine Spalte (B) mit Versandnummern.
Diese Versandnummern beginnen bei 11500 und enden z.Z. bei ca. 16000.

Jetzt bin ich auf der Suche nach einem Makro / VBA-Lösung womit ich folgendes machen kann:
1)den Suchbereich eingeben (also z.B. 11500 bis 16000)
2)Doppelte Einträge gelistet werden (in einem gesonderten Tabellenblatt)
3)Fehlende Einträge gelistet werden (ebenfalls im gesonderten Tabellenblatt, soll Schwerpunkt des Makros sein)

Jemand Vorschläge um das "Problem" anzugehen?
Es wird gebraucht um fehlende Versandnummern einer Charge zu finden,
außerdem sind die Versandnummern nicht/nur grob sortiert.
D.h. die Zahlen wurden händisch eingegeben, es sind also Doppeleinträge,
fehlende Einträge, sowie fehlerhafte Einträge möglich.

Denke es müsste der "Suchbereich" in ein Array eingelesen werden,
die Bereiche per Schleife durchsucht werden,
Ergebnisse in ein/zwei andere Arrays zwischengespeichert und
dann ins gesonderte Tabellenblatt ausgegeben werden.

Leider sind meine Kenntnisse doch arg eingerostet
und mir fehlt jeglicher Anfang wie es losgehen könnte.
Zuletzt hatte ich zu Office 2003 Zeiten kleinere Makros geschrieben.

Viele Grüße,
Hoppel

[Diese Nachricht wurde von hoppel66 am 02. Feb. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 03. Feb. 2012 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hoppel66 10 Unities + Antwort hilfreich

Hallo Hoppel,

ich sags nicht gern aber immer wieder:

EXCEL ist KEINE Datenbank


Übertrage die Daten in eine Datenbank, für ein DBMS sind die beschriebenen Aufgabe leicht zu realisieren.

Für alle die die meinen "es geht aber auch mit Excel" die sollens tun, ich werde mich daran nicht mehr beteiligen.

 

Zitat:
Denke es müsste der "Suchbereich" in ein Array eingelesen werden,
die Bereiche per Schleife durchsucht werden,
Ergebnisse in ein/zwei andere Arrays zwischengespeichert und
Da kriegt man ja schon beim lesen Pickel.
Solchen Beispielcod ezu such doppelter Datensätze findet man überall im Internet
Code:
SELECT productcodes, COUNT(productcode)
FROM Products
GROUP BY productcode
HAVING ( COUNT(productcode) > 1)

Gruß
Peter

[Diese Nachricht wurde von Comos User am 03. Feb. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hoppel66
Mitglied
kfm. Angestellter

Sehen Sie sich das Profil von hoppel66 an!   Senden Sie eine Private Message an hoppel66  Schreiben Sie einen Gästebucheintrag für hoppel66

Beiträge: 4
Registriert: 02.02.2012

erstellt am: 03. Feb. 2012 08:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke für deine Antwort.
Das diese "Geschichte" mit einer Datenbank einfacher zu händeln ist, ist mir klar.
Leider bekommen wir (ich) diese Datei von anderen Abteilungen
wo nur mit Excel gearbeitet wird.
Desweiteren müsste so eine Datenbank auch erstmal erstellt werden,
und wie es in den meisten Firmen so ist: "Das haben wir schon immer so gemacht", Neuerungen sind nicht gern gesehen, es müssen ja auch andere Kollegen damit "klarkommen".
Danke für den Tipp mit "doppelte Datensätze" werd mich mal damit ans suchen machen.

Gruß,
Hoppel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 03. Feb. 2012 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hoppel66 10 Unities + Antwort hilfreich

Morgen,

mal als Ansatz. Liest je Blatt alle Werte aus Spalte B in ein Array.
Durchläuft dann das Array und testet ob da eine Zahl im gewünschten Bereich steht. Falls ja wird diese Zahl mit einem Dictionary-Objekt gezählt.
Dann wird ein Array mit allen gesuchten Werten erstellt und mit den Zählern aus dem Dictionary gefüllt.
Zuletzt wird das in eine neue Mappe geschrieben.

Reicht Dir das?

HTHHope this helps (Hoffe, es hilft weiter), Bernd
--

Code:
Option Explicit

Sub x()
   Dim ws As Worksheet
   Dim lngRows As Long
   Dim ar As Variant
   Dim i As Long
   Dim lngVal As Long
   Dim lngMinVal As Long
   Dim lngMaxVal As Long
   Dim objDic As Object
  
   lngMinVal = Int(Val(Application.InputBox("Von:", "myMacro", 1, Type:=1)))
   lngMaxVal = Int(Val(Application.InputBox("Bis:", "myMacro", 9999, Type:=1)))
   If lngMinVal < 1 Or lngMaxVal < lngMinVal Then Exit Sub
  
   Set objDic = CreateObject("scripting.dictionary")
  
   ' Alle Werte aus Spalte B durchlaufen
   For Each ws In Worksheets
      lngRows = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
      ar = ws.Cells(1, 2).Resize(lngRows)
      If Not IsEmpty(ar) Then
         For i = 1 To lngRows
            If IsNumeric(ar(i, 1)) Then
               lngVal = Int(Val(ar(i, 1)))
               If lngVal >= lngMinVal And lngVal <= lngMaxVal Then
                  objDic(lngVal) = objDic(lngVal) + 1
               End If
            End If
         Next
      End If
   Next
        
   ' Ausgabearray zusammenbauen
   ReDim ar(lngMinVal To lngMaxVal, 1 To 2)
   For i = lngMinVal To lngMaxVal
      ar(i, 1) = i
      ar(i, 2) = 0
      If objDic.Exists(i) Then ar(i, 2) = objDic(i)
   Next
  
   ' und ausgeben
   Workbooks.Add
   Cells(1).Resize(lngMaxVal - lngMinVal + 1, 2) = ar
  
   objDic.RemoveAll
   Set objDic = Nothing
End Sub


[Diese Nachricht wurde von bst am 03. Feb. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hoppel66
Mitglied
kfm. Angestellter

Sehen Sie sich das Profil von hoppel66 an!   Senden Sie eine Private Message an hoppel66  Schreiben Sie einen Gästebucheintrag für hoppel66

Beiträge: 4
Registriert: 02.02.2012

erstellt am: 03. Feb. 2012 10:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Vielen DANK!!!

Das hilft mir ein ganzes Stück weiter.
Das ist eine gute Basis um an meine Bedürfnisse angepasst zu werden.

Nochmals Danke.

Gruß,
Hoppel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Ehrenmitglied V.I.P. h.c.
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 03. Feb. 2012 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hoppel66 10 Unities + Antwort hilfreich


226_1642_beispiel-zaehlenwenn.png


226_1642_Mappe1.zip

 
Hallo Hoppel,

ich würde das noch ganz anders machen: erstell dir ein zusätzliches Tabelleblatt, wo du alle möglichen/zulässigen Versandnummern in Spalte A nimmst. Dann für jedes Blatt, auf dem du nachschauen willst, eine weitere Spalte, jeweils mit der einfachen Formel =ZÄHLENWENN(VersandA!B:B;A2) darin, dadurch bekommst du raus, wie oft deine theoretisch verfügbare Versandnummer aus Zelle A2 in der Spalte B im Tabellenblatt VersandA vorkommt.

So machst du für jedes Tabellenblatt eine Spalte. Dann noch eine Spalte mit der Summe aus den ZÄHLENWENN-Spalten, die mit einer schönen bedingten Formatierung und/oder Filter und du bekommst ganz schnell die Versandnummern, die noch gar nicht benutzt wurde und die, die mehrfach benutzt wurden 

Ich hab mal so was als Beispiel angehangen, wird vielleicht klarer, wenn du das in Excel siehst 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hoppel66
Mitglied
kfm. Angestellter

Sehen Sie sich das Profil von hoppel66 an!   Senden Sie eine Private Message an hoppel66  Schreiben Sie einen Gästebucheintrag für hoppel66

Beiträge: 4
Registriert: 02.02.2012

erstellt am: 03. Feb. 2012 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Auch Dir vielen Dank.
Deine "Version" enspricht so ziemlich dem was ich gesucht habe.
Werde deine Tabelle für die Übersichtlichkeit (2000-6000 Versandnummern)
noch etwas anpassen, aber ansonsten so verwenden!

Nochmals Danke auch an alle Anderen für die rasche Hilfe.
Threat kann geschlossen werden.

Gruß,
Hoppel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz