Hier sind drei Möglichkeiten, die den Anforderungen entsprechen, und eine vierte, die eher situativ ist. Ja, 2 von ihnen haben gesagt, dass sie von OP nicht arbeiten sollen. Sie arbeiten für mich in Office 365 Pro Plus, damit sie für viele andere funktionieren. Ihre Laufleistung kann je nach Excel-Version variieren:
Methode 1 - Kopieren und Einfügen
- Formatieren Sie den Zielbereich als
Text
Copy
die HTML-DatenPaste
mitMatch Destination
Methode 2 - Daten aus dem Web abrufen
- Klicken Sie auf der Registerkarte "Daten" des Menübands auf "Daten abrufen"
- Bewegen Sie den Mauszeiger über "Aus anderen Quellen", um das Dropdown-Menü zu erweitern
- Wählen Sie "From Web" und geben Sie den URL / Dateispeicherort ein
- Wählen Sie die Quelltabelle aus der Liste auf der linken Seite des Abfrageeditors aus
- Klicken Sie unten rechts auf "Bearbeiten"
- Ändern Sie den Datentyp jeder Spalte
Text
in der Gruppe "Transformieren" der Registerkarte "Start" des Menübands - Klicken Sie auf "Schließen & Laden". Eine Tabelle wird in einem leeren Arbeitsblatt erstellt
Methode 3 - VBA
- Fügen Sie den Code von unten in ein Modul ein
- Ändern Sie PathOrURL in Ihren Dateispeicherort oder URL
- Führen Sie die Prozedur aus
Ich schrieb dies mit der Annahme, dass Ihre Datenquelle die erste oder möglicherweise einzige Tabelle in der HTML-Datei ist. Es konvertiert die Quellentabellenwerte in Zeichenfolgen und schreibt die Zeichenfolge in das Arbeitsblatt, ohne sie zu kopieren oder einzufügen. Zellenformate müssen nicht geändert werden.
Erfordert MS Internet Controls und MS HTML Object Library-Referenzen
Option Explicit Sub GetTextFromHTML() Dim PathOrURL as String: PathOrURL = Environ("USERPROFILE") & "\Desktop\a4rZKDWK.html" Dim IE As New InternetExplorerMedium Dim x As Long, y As Long Dim tbl As HTMLTable Dim sVals() As String IE.Navigate PathOrURL Do While IE.ReadyState <> READYSTATE_COMPLETE DoEvents Loop Set tbl = IE.Document.getElementsByTagName("table")(0) With tbl ReDim sVals(1 To .Rows.Length, 1 To .Rows(1).Cells.Length) For y = 1 To .Rows.Length For x = 1 To .Rows(1).Cells.Length sVals(y, x) = CStr(tbl.Rows(y - 1).Cells(x - 1).innerText) Next Next End With IE.Quit ActiveSheet.Cells(1, 1).Resize(UBound(sVals), UBound(sVals, 2)).Value = sVals End Sub
Methode 4 - Übergangseintrag (situativ)
- Klicken Sie im Menüband auf "Datei"
- Wähle Optionen"
- Wählen Sie "Erweitert"
- Scrolle ganz nach unten
- Aktivieren Sie das Kontrollkästchen für "Übergangseintrag".
- HTML-Daten kopieren
- Einfügen in ein Excel-Arbeitsblatt
Es kann ein Fall für die Verwendung von "Übergangseingaben" gemacht werden, da das Datumsproblem dadurch gelöst wird, dass Brüche kopiert und als Brüche eingefügt werden können - jedoch nicht den Anforderungen von OP genügt, da dies auch den reduzierbaren Bruch vereinfacht. Beim Kopieren von 6/9 werden 2/3 eingefügt. Irreduzible Fraktionen sind in Ordnung und werden nicht modifiziert. Unzulässige Brüche werden ebenfalls unterstützt.
Ich vermute, Excel konvertiert die Quelldaten von Bruch in Dezimal und dann wieder in Bruch, da vereinfachte Brüche ein logisches Ergebnis einer Dezimal-Konvertierung sind. Wenn Sie erwägen, mit 2/4, 3/6, 12/24 zu beginnen, werden alle in 0,5 Dezimalzahlen konvertiert. Wir verlieren alle Informationen über die Einzigartigkeit, wenn sie das tun. Sie können 2/4 von 3/6 unterscheiden, aber das ist mit 0,5 und 0,5 nicht möglich. Von der Dezimalstelle zurück zum Bruch, es gibt buchstäblich unendlich viele Brüche von 0,5 und wir könnten jeden von ihnen verwenden. Wir wissen nicht, womit wir angefangen haben, weil alles verloren gegangen ist und sich auf 0,5 bewegt hat. Die Wahrscheinlichkeit, mit unendlich vielen Möglichkeiten genau zu raten, ist eher gering, so dass das beste Ergebnis vollständig reduziert und vereinfacht wird diese ... 1/2
Leider leidet das benutzerdefinierte Format "# / #", das ich letzte Woche empfohlen habe, unter dem gleichen Problem wie "Übergangseintrag". Es bringt alle Fraktionen herüber, vereinfacht aber jede eingefügte reduzierbare Fraktion.