Excel Bereich Kopieren

  • Moin,

    1.Super Seite hat mir schon viele Probleme lösen können
    2.Mein Problem wo ich noch keine Lösung finde:

    Ich habe ne Excel Tabelle sagen wir mal:

    TEST1 /TEST2 /TEST3 /TEST4
    hallo/ wie /geht /es dir?

    So nun möchte ich bestimmten String suchen können und dann zb. zwei Felder weiter den Inhalt rauskopieren. Also zb suche ich nach "hallo" und der kopiert
    mir den inhalt aus test3 also "geht". Ist das überhaupt möglich. Ich weiß das ich mit _ExcelReadCell eine Zeile und Spalte auslesen kann aber die ist bereits vordefiniert.

    Für eure Hilfe wäre ich sehr dankbar

    :thumbup:

    3 Mal editiert, zuletzt von bobekos (22. Dezember 2011 um 08:05)

  • Hab mit Exelfunktionen noch nicht viel gemacht, aber spontan würde mir "_ExcelReadSheetToArray " einfallen. Und dann halt weiter mit dem Array arbeiten.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • erstmal krass wie schnell hier geantworet wird 8o

    also das es sich um eine Excel Datei handelt da hab ich kein Einfluss drauf. Die Datei kommt nicht von mir.
    Aber die Daten könnte ich dann weiter als CSV abspeichern.
    Könntest du mir da eventuell mit nem Beispiel weiter helfen also ich hab da echt keine Ahnung wie ich diesen bestimmten Inhalt rauskopiere.

    Das wäre mein Anfang nach diesen Bestimmten String zu suchen:

    Func check()
    $suche=GUICtrlRead($benutzereingabe)
    $datei=FileRead("test.csv")
    If StringInStr($datei,$suche) Then
    MsgBox(0,"","Gefunden")
    Else
    MsgBox(0,"","Nicht Gefunden")
    EndIf
    EndFunc

    Gut die Funktion sucht nach nem bestimmten String jetzt wäre es mir wichtig das da wo der String gefunden worden ist sagen wir mal der Text zwei Zeilen drunter und 6 Zeichen weiter nach rechts rauskopiert wird.

    Schon mal vielen Dank

    :thumbup:

  • [Blockierte Grafik: http://s1.directupload.net/images/111221/temp/gpkuqt9x.jpg]

    Also wenn ich jetzt zum Beispiel nach der 2 suche dann soll dann die Tel.Nr 123 kopiert werden.

    oder:

    [Blockierte Grafik: http://s14.directupload.net/images/111221/temp/z4kdh2tz.jpg]

    Da will ich eben nach [ADRESSE] suchen und das mir dann die zweite Reihe also Grotze 34 rauskopiert wird.

    Wo die Daten rauskopiert werden ist mir erstmal egal kann auch ne Textdatei sein.

    :thumbup:

    2 Mal editiert, zuletzt von bobekos (21. Dezember 2011 um 13:28)

  • Hey, chip hat dir doch schon die Lösung genannt? wie wäre es damit an der Umsetzung zu arbeiten :)
    du brauchst nur diese Funktion "_ExcelReadSheetToArray" und arbeitest nachdem du alles ausgelsen hast mit _ArraySearch etc..

    Gruß Marvin

  • ich hab ja nur auf Xenobiologist Post geantwortet...und ja ich weiß das Chip mir ne Idee gebracht hat bin
    schon dabei sie umzusetzten nur mehr Hilfe kann ja nicht schaden...

    Gruß Bobekos

    :thumbup:

  • Besteht die möglichkeit das auch mit ner normalen TXT Datei zu machen sprich:

    MountPoint = U:\
    Volume Label =
    Volume Size =
    Volume Serial =
    Partition Type =
    Partition Align =
    Volume Name =
    Partition Name =
    Bus Type =
    Drive Type =
    Device Types =
    NoMediaNoLetter =

    ------------------------------------------------------------------------------------------------------------------------

    MountPoint = A:\
    Volume Label =
    Volume Size =
    Volume Serial =
    Partition Type =
    Partition Align =
    Volume Name =
    Partition Name =
    Bus Type =
    Drive Type =
    Device Types =
    NoMediaNoLetter =


    So sieht die Textdatei aus jetzt will ich das er nur Volume Size und Volume Label von MountPoint U auskopiert und nicht den von A.
    wie gesagt ich weis jetzt wie ich den String raussuche aber keine Ahnung wie ich sagen kann das er zwei Punkte drunter die Sachen kopieren soll

    ps.sorry das ich so nerve aber wenn es jemand besser weiss dann frage ich eben nach

    :thumbup:

    • Offizieller Beitrag

    Klar, das geht auch.

    Hier mal ganz schnell dein Excelbeispiel.

    1 Name Adresse TelNr
    2 Stefan Stefanos 123
    3 Marko Markonos 568


    Spoiler anzeigen
    [autoit]

    ; ReadExcel

    [/autoit] [autoit][/autoit] [autoit]

    #include <Excel.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $oExcel = _ExcelBookOpen(@ScriptDir & '\e1.xls', 0, True)
    ;~ ConsoleWrite(@error & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $aArray = _ExcelReadSheetToArray($oExcel) ;Using Default Parameters
    ;~ ConsoleWrite(@error & @CRLF)
    _ArrayDisplay($aArray, "Array using Default Parameters")

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(_YourSearch(1, '2') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func _YourSearch($column, $txt)
    For $i = 0 To UBound($aArray) - 1
    If $aArray[$i][$column] = $txt Then Return $aArray[$i][$column + 3]
    Next
    Return "no match"
    EndFunc ;==>_YourSearch

    [/autoit]
  • eee.......erstmal danke das du noch dabei bist ;)

    so ich versteh nur Bahnhof ok Schritt für Schritt:

    1.Datei wird geöffnet
    2.Alle Arrays werden angezeigt in einer Tabelle (?) (geht schon bei mir nicht)
    3.Schreibt in die Console meine Suche (welche Suche wo geb ich das ein?)

    also wenn ich den Script ausführe steht bei mir nur no match aber ich weiß auch nicht nach was er sucht

    :thumbup:

  • Das mit dem Pfad das war mir klar.
    Das andere ist ja das was ich ja nicht weiß. Denn die Kolumne ändert sich.
    Ich denke mal ich lass das mit der Excel Datei hast du villeicht ne Idee für die Textdatei mit den MountPoint?

    Sorry das ich so nerve

    :thumbup:

    • Offizieller Beitrag

    Wenn sowieso mit Excel gearbeitet wird, empfiehlt sich aus meiner Sicht die Lösung mit VBA vorzunehmen. Gerade was Suchen/Ersetzen angeht, ist VBA sehr schnell (vorausgesetzt, man programmiert sauber ;)).
    Ich erledige inzwischen viele Problemstellungen mit VBA. Auch wenn Interaktion mit dem User gefragt ist - Grafische Oberfläche in VBA ist genauso easy, wie mit AutoIt und wer gern mit Bildchen auf der GUI arbeitet hat auch noch den Vorteil, dass sich eigentlich für alle Controls Hintergrundbilder setzen lassen.
    Findet die Datennutzung jedoch ausserhalb von Excel statt, dann empfiehlt sich, wie schon gesagt wurde, der Export in eine csv-Datei.

  • Ok ich versuch was drauszubasteln danke nochmal für deine Hilfe Xenobiologist .
    Und übrigens wenn du wirklich aus Münster kommst dann finde ich das sehr gut komme nämlich auch von dort.
    Visual Basic hilft mit in diesem Fall leider nicht weiter da ich später ohne Excel arbeite aber torotzdem danke für den Tipp.


    ps.kann geschlossen werden oder kann ich das auch selber tun?

    Edit BugFix. Ja, kannst du selbst tun. Erster Post, Präfix auf "Gelöst" setzen.

    :thumbup:

    2 Mal editiert, zuletzt von BugFix (21. Dezember 2011 um 20:46)