J'ai créé une fonction d'importation pour les données.
Parfois, la chaîne d'importation vient comme suit: P>
47588328 2020.06.25 11:42:13 Achetez 0,11 EURUSD 1.12240 1.11902 0.00000
2020.06.25 14:05:04 1.11902 0,00 0,00 0,00 0,00 -35,35 P> blockquote>et parfois comme celui-ci p>
xxx pré> i divise les valeurs en une matrice. Si la chaîne est séparée par des pauses de ligne, il n'y a pas de problème. P>
Si la chaîne est séparée avec de l'espace, je ne peux pas le traiter. J'ai essayé de remplacer les espaces avec des pauses de la ligne.
Cela fonctionnerait mais il y a des pièces de date et de temps. Ils doivent rester ensemble et ne pas quand je remplace les espaces avec des pauses de ligne. P>J'ai ceci: p>
> For Each Space in TextboxText > If Not space nr = 2 or space nr = 10 Then > replace space > End if > Next
3 Réponses :
Ce n'est pas aussi propre que je l'espérais à l'origine, je pense qu'il y a probablement une meilleure façon de le faire, mais cela fonctionne:
Sub test()
Dim s As String: s = "47588328 2020.06.25 11:42:13 buy 0.11 eurusd 1.12240 1.11902 0.00000 2020.06.25 14:05:04 1.11902 0.00 0.00 0.00 -35.35"
Dim resultArray As Variant
resultArray = GetSplit(s)
End Sub
Je dirais que je le scinder dans un tableau comme vous l'avez fait (en utilisant probablement Alors tout ce que vous effectuez par la suite avec le tableau aurait juste besoin d'inclure par exemple Split (Strtext) code> puis remplissez-le dans le tableau pour rejoindre la date avec l'heure. Quelque chose comme le dessous < Pré> xxx pré> si myarray (x) <> "" code> Pour rater ces valeurs vides. P > p>
Je viens d'essayer cela et il semble être de retour pour Iddate, même sur des cordes comme "0,11" - très bizarre
Bonjour Spencer Barnes J'aime vraiment ta solution! assez sexy :) Merci beaucoup d'avoir monté cela. J'aime bien parce que les dates peuvent être n'importe où dans la chaîne. Mais comme le dit Jamheadart, le seul problème est que cela revient vrai pour Isdate non seulement avec les dates. Avez-vous une idée de la façon de résoudre ce problème? Le problème sont des valeurs telles que "0,11", elles sont interprétées comme une date, pouvons-nous en quelque sorte exclure cela? Peut-être avec regex, mais je ne sais pas exactement comment travailler avec eux ...
Hmm ... dois dire que je n'ai pas vraiment testé cela de manière exhaustive, c'était la première solution que j'ai pensée. Oublié que cela interpréterait les décimales (0.11) en tant que fois (dans la présente affaire 00:11:00) Ainsi, la prochaine solution suivante; Utilisez CDate code> au lieu de ISDate code> pour vérifier que c'est une date non une heure. Il suffit de le modifier dans la réponse maintenant ...
@Lucas Si c'est un confort que je n'ai jamais entendu parler de regex. J'ai aussi simplement pensé à une méthode éventuellement plus infaillible; si ISDate (myarray (x) & "" & myarray (x + 1)) code> - qui pourrait être utilisé à la place, je pense. Choisissez votre favori.
Vous êtes magnifique :) J'ai également trouvé une solution, sa possible de faire une vérification additionnelle pour le "? ??" motif comme celui-ci
J'ai trouvé un moyen de supprimer les valeurs EMTPY et de renvoyer un nouveau tableau. Cela fonctionne comme ceci redim Newarr (lbound (myarray) à ubound (myarray)) pour i = lbound (myarray) à ubound (myarray) si myarray (i) <> "" Alors NewRray (je ) j = j + 1 extrémité si le prochain i Redim conserve Newarr (LBound (myarray) à j) code>
C'est génial - content que cela fonctionne pour vous! Bonne idée sur la création d'un nouveau tableau ne contenant pas les valeurs vides.
J'ai trouvé une autre IssSue .. aussi si vous utilisez si ISDate (myarray (x) & "" & myarray (x + 1)) code> Certains chiffres sont interprétés comme des dates, qu'ils ne sont pas ajoutées .. J'ai ajouté Un autre vérifie comme ceci: comme1 = myarray (x) comme "#. ##" code> similaire2 = myarray (x + 1) comme "#. # / code > Ensuite, je teste avec une instruction IF si elles ne sont pas true si non similaire1 = true et non similaire2 = true, débogage "blabla" fin si code>
Celui-ci renvoie une chaîne directement sans boucle, mais elle s'appuie également sur le principe que votre position de date ne changera jamais et une magie " Utilisez comme ceci: p>