PDA

Vollständige Version anzeigen : Umfangreiche Datenabfrage


schramo11
02.07.2015, 08:10
Hallo Zusammen,

Ich habe folgendes Problem:

Ich habe eine große Datenbank, die eine Spalte hat, in der Informationen als ganze Texte hinterlegt sind. Ich möchte nur einen bestimmten Teil dieser Informationen erfassen und mir in einzelne Zellen ausgeben lassen.

Beispiel:
In einer Spalte sind mehrere Zellen mit viel Text. In den Texten werden unterschiedliche DINs mit Nummern dahinter angegeben. Ich möchte eine Liste haben, die mir alle DINs auflistet, die in der Spalte aufgeführt werden. Dabei ist es egal, ob die DINs doppelt sind. Ich brauch nur eine Liste aller vorhandenen Einträge.

Tabelle:
Zeilennummer Textfeld
1 blablabla blabla bla blab DIN 9000
blablabla DIN 9001 bla bla
DIN 16949 blabla DIN 9008
2 DIN 9001 blabla DIN 11100

Gewünschtes Ergebnis:
DIN 9000
DIN 9001
DIN 16949
DIN 9008
DIN 9001
DIN 11100

Der Anfang ist bei den gesuchten Einträgen immer gleich (DIN). Die Anzahl der Zeichen danach variiert.

Ich hoffe ihr könnt mir helfen bzw. mir ein paar Ansätze liefern.

Danke

Hajo_Zi
02.07.2015, 15:49
löse es so.
<br/><b><em>Tabelle3</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:126px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="border-color:#000000; color:#000000; border-color:#000000; background-color:#FFFFFF ;; text-align:left; ">DIN 9000</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="border-color:#000000; color:#000000; border-color:#000000; background-color:#FFFFFF ;; text-align:left; ">DIN 9001 </td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="border-color:#000000; color:#000000; border-color:#000000; background-color:#FFFFFF ;; text-align:left; ">DIN 16949 </td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="border-color:#000000; color:#000000; border-color:#000000; background-color:#FFFFFF ;; text-align:left; ">DIN 9001 </td></tr></table><br/><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px;font-size:11pt; background-color:#ffffff; width:800px;padding-left:2pt; padding-right:2pt; "><tr style="background-color:#FFCC66; text-align:center; font-weight:bold; "><td colspan="3" > verwendete Formeln </td><td> </td></tr><tr valign="top" style="background-color:#FFCC66; text-align:center; font-weight:bold; "><td> Zelle </td><td> Formel</td><td> Bereich </td> <td>N/A</td></tr><tr><td>A1:A4</td><td>=WENNFEHLER(LINKS(TEIL(Tabelle2!A1;SUCHEN("DIN";Tabelle2!A1);35);WENNFEHLER(SUCHEN(" ";TEIL(Tabelle2!A1;SUCHEN("DIN";Tabelle2!A1);35);5);LÄNGE(TEIL(Tabelle2!A1;SUCHEN("DIN";Tabelle2!A1);35))));"")</td><td>&nbsp;</td><td>&nbsp;</td></tr></table><table cellspacing="0" cellpadding="0"><tr style="text-align:left; font-weight:bold; " class="style21"><td style="text-align:left; font-size: xx-small" ><a href="http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip" >Excel-Inn.de</a></td></tr> <tr style="text-align:left; font-weight:bold; " class="style21"><td style="text-align:left; font-size: xx-small" ><a href='http://Hajo-Excel.de/tools.htm' >Hajo-Excel.de</a></td></tr><tr style="text-align:left; font-weight:bold;" ><td style="text-align:left; font-size: xx-small" >XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007</td></tr><tr style="text-align:left; font-weight:bold; " ><td style="text-align:left; font-size: xx-small" > Add-In-Version 19.05 einschl. 64 Bit</td></tr></table><br/>

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

schramo11
07.07.2015, 07:00
Guten Morgen,

Ich habe versucht den Lösungsansatz an Hand eines Beispiels umzusetzen. Leider hat es nicht geklappt.

Nach dem Befehl "WENNFEHLER(LINKS(TEIL" will Excel eine Texteingabe und keinen Tabellenverweis.

Hilfe wäre super.

Danke

xlph
07.07.2015, 07:50
Hallo,

Public Sub xlph_Extract()

Dim objQuellBereich As Range
Dim objZielZelle As Range

Dim vntItem As Variant

Dim objRegex As Object
Dim objMatches As Object
Dim objMatch As Object

Dim avntDINs() As Variant
Dim iavntDINs As Long


With ThisWorkbook.Worksheets("Tabelle1")
Set objQuellBereich = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

With ThisWorkbook.Worksheets("Tabelle1")
Set objZielZelle = .Range("C1")
End With


Set objRegex = CreateObject("vbscript.regexp")

With objRegex
.Global = True
.IgnoreCase = False
.MultiLine = True
.Pattern = "DIN \d+"
End With

For Each vntItem In objQuellBereich.Value
Set objMatches = objRegex.Execute(vntItem)
For Each objMatch In objMatches
ReDim Preserve avntDINs(0 To iavntDINs)
avntDINs(iavntDINs) = objMatch.Value
iavntDINs = iavntDINs + 1
Next
Next

Range(objZielZelle, objZielZelle.End(xlDown)).ClearContents
objZielZelle.Resize(UBound(avntDINs) + 1).Value = WorksheetFunction.Transpose(avntDINs)

Set objQuellBereich = Nothing
Set objZielZelle = Nothing
Set objRegex = Nothing
Set objMatches = Nothing
Set objMatch = Nothing

End Sub

Hajo_Zi
07.07.2015, 15:53
wie Du in meinem Beispiel siehst, geht es bei mir.
Dein Beispiel musst Du selber prüfen, da es nur wenige sehen.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>