Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zahl per Makro suchen ( Mehrfachfund ) | Herbers Excel-Forum


Betrifft: Zahl per Makro suchen ( Mehrfachfund ) von: Hans
Geschrieben am: 23.01.2012 13:26:16

Hallo Leute .. ich habe ein Problem und bekomme es nicht hin.

Mein Chef verlangt von mir dass ich es auf seine Wünsche hinbekomme,..

Ich habe eine Datei die Auftrag.xls heißt. Hier stehen in der Spalte „D“ Nummern.
Per Marko soll eine Nummer ( die kann auch öfters vorkommen ) gesucht werden.
Und dann die in der dazugehörigen Spalte A stehende Nummer in der Datei Erfassung.xls in dem Sheet Tabelle1 in der Spalte Z untereinander ausgegeben werden.

Kann mir jemand beim Ansatz helfen?

Cu

Hans

  

Betrifft: AW: Zahl per Makro suchen ( Mehrfachfund ) von: Rudi Maintaire
Geschrieben am: 23.01.2012 13:47:15

Hallo,
wozu Makro?
Als Ansatz:

 ABCDEFGH
1X  Nr  NrX
2a  1  2b
3b  2   d
4c  3   f
5d  2   i
6e  1   m
7f  2   p
8g  3   t
9h  4    
10i  2    
11j  3    
12k  4    

ZelleFormel
H2{=WENN(ZEILE(A1)>ZÄHLENWENN($D$2:$D$23;$G$2);"";INDEX($A$2:$A$23;KKLEINSTE(WENN($D$2:$D$23=$G$2;ZEILE($1:$22);"");ZEILE(A1))))}
H3{=WENN(ZEILE(A2)>ZÄHLENWENN($D$2:$D$23;$G$2);"";INDEX($A$2:$A$23;KKLEINSTE(WENN($D$2:$D$23=$G$2;ZEILE($1:$22);"");ZEILE(A2))))}
Achtung, Matrixformel!
Die geschweiften Klammern{} nicht eingeben,
sondern die Zelle mit
Shift + Strg + Enter
verlassen statt Enter alleine.


Gruß
Rudi


  

Betrifft: AW: Zahl per Makro suchen ( Mehrfachfund ) von: Hans
Geschrieben am: 23.01.2012 13:58:35

Vielen Dank für die schnelle Antwort.

Ich habe es zur Zeit so als Formel drinnen ... aber es schein zu viel für Excel zu sein.
Wenn die Datei gepeichert wird kommt immer die Meldung "Microsoft Excel kann diesen Vorgang mit den verfügbaren Ressourcen nicht aussführen ...."

Außerdem dauert seit dem alles sehr lange.

cu
Hans


  

Betrifft: Fragen von: Rudi Maintaire
Geschrieben am: 23.01.2012 14:14:46

Hallo,
in welcher Datei soll das Makro stehen?
In welchem Blatt in Auftrag.xls stehen die Daten?
Nummern in A einmalig oder auch mehrfach?

Gruß
Rudi


  

Betrifft: AW: Fragen von: Hans
Geschrieben am: 23.01.2012 14:24:11

Hallo Rudi.

Das Markro soll in der Datei Erfassung.xls stehen.

Das Blatt in der Datei Auftrag heist "Daten"
Die Nummer in der Spalte A gibt es nur einmal.
Die Nummer ( nach der gesucht wird ) in Spalte D gibt es einmal oder mehrfach.

Die gefundenen Nummern der Spalte A sollen dann in der Datei Erfassung.xls im Blatt "Tabelle1" in der Spalte Z untereinander stehen.

Cu

Hans


  

Betrifft: AW: Fragen von: Rudi Maintaire
Geschrieben am: 23.01.2012 14:34:41

Hallo,
in ein Modul:

Sub Zahl()
  Dim lngZahl As Long, arr(), lngRow As Long, lngCount As Long, lngCounter As Long
  Dim wksAuftrag As Worksheet, wksErfassung As Worksheet
  
  Set wksErfassung = ThisWorkbook.Sheets(1)
  
  lngZahl = Application.InputBox("Zahl?", "Eingabe", Type:=1)
  
  If lngZahl > 0 Then
  
    On Error Resume Next
    Set wksAuftrag = Workbooks("Auftrag.xls").Sheets("Daten")
    On Error GoTo 0
    If wksAuftrag Is Nothing Then
      Set wksAuftrag = Workbooks.Open(ThisWorkbook.Path & "\Auftrag.xls").Sheets("Daten")
    End If
    
    With wksAuftrag
      lngCount = Application.CountIf(.Columns(4).lngZahl)
      If lngCount = 0 Then
        MsgBox lngZahl & " nicht vorhanden.", vbOKOnly, "Gebe bekannt..."
      Else
        ReDim arr(1 To lngCount, 1 To 1)
        For lngZahl = 1 To .Cells(Rows.Count, 4).End(xlUp).Row
          If .Cells(lngRow, 4) = lngZahl Then
            lngCounter = lngCounter + 1
            arr(lngCounter, 1) = .Cells(lngRow, 1)
          End If
        Next
      End If
    End With
    With wksErfassung
      .Columns(26).ClearContents
      .Cells(1, 26).Resize(lngCount) = arr
    End With
  End If
End Sub

Ungetestet.
Auftrag und Erfassung im selben Ordner.

Gruß
Rudi


  

Betrifft: AW: Fragen von: Hans
Geschrieben am: 23.01.2012 14:55:48

Hallo Rudi

In der Zeile :
lngCount = Application.CountIf(.Columns(4).lngZahl)

erscheint die Fehlermeldung "Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht "

cu

Hans


  

Betrifft: Tippfehler von: Rudi Maintaire
Geschrieben am: 23.01.2012 15:01:22

Hallo,
Application.CountIf(.Columns(4), lngZahl)

Gruß
Rudi


  

Betrifft: AW: Tippfehler von: Hans
Geschrieben am: 23.01.2012 15:07:26

Danke :D

Aber nun erscheint in der Zeile :

If .Cells(lngRow, 4) = lngZahl Then

Laufzeitfehler 1004
Andwenungs- oder objektdev. Fehler

cu

Hans


  

Betrifft: AW: Tippfehler von: Rudi Maintaire
Geschrieben am: 23.01.2012 15:14:09

Hallo,
ich sach ja: ungetestet ;-)

    With wksAuftrag
      lngCount = Application.CountIf(.Columns(4), lngZahl)
      If lngCount = 0 Then
        MsgBox lngZahl & " nicht vorhanden.", vbOKOnly, "Gebe bekannt..."
      Else
        ReDim arr(1 To lngCount, 1 To 1)
        For lngRow = 1 To .Cells(Rows.Count, 4).End(xlUp).Row
          If .Cells(lngRow, 4) = lngZahl Then
            lngCounter = lngCounter + 1
            arr(lngCounter, 1) = .Cells(lngRow, 1)
          End If
        Next
      End If
    End With

Gruß
Rudi


  

Betrifft: AW: Tippfehler von: Hans
Geschrieben am: 23.01.2012 17:01:39

Vielen Dank Rudi

Es funktioniert 1 A

cu

Hans


Beiträge aus den Excel-Beispielen zum Thema "Zahl per Makro suchen ( Mehrfachfund )"