< návrat zpět

MS Excel


Téma: Z formátu jako text na číslo pomocí VBA rss

Zaslal/a 3.5.2022 13:38

Dobrý den,

mám určitá data, která exportuji, avšak někdy se mi exportují jako text a někdy jako obecné. Řádků může být x.
Potřeboval bych pomocí makra udělat úpravu pro sloupec J, případně i pro sloupce K, L a M a převést tam uvedená data z formátu jako text vyloženě na číslo.

Cílem je, aby koncový uživatel nemusel do těchto dat ručně zasahovat a opravovat chyby, ale aby je pak importoval dál.

Bohužel nevím, jak to ve VBA udělat. Zkoušel jsem nahrát makro, kde tu chybu odstraním, ale zaznamenalo se mi jen toto:

' Prevedeni_na_cislo Makro
' Sheets("EXPORT").Select
' Range("J2").Select
' Range(Selection, Selection.End(xlDown)).Select

Předem děkuji za úvahu a řešení.

Příloha: xlsx52627_export-2022.05.03-12.51.37.xlsx (12kB, staženo 18x)
Zaslat odpověď >

#052628
avatar
Text, který představuje číslo, lze převést na číslo vynásobením 1.

Nakopírovat jedničku do paměti, (CTRL_C),
vybrat oblast
Vložit jinak - Násobit

Automatický převod na číslo představuje riziko - často si převede na datum.citovat
#052629
elninoslov
Sub PrevodNaCislo()
With Worksheets("EXPORT")
.Range(.Range("J1"), .Cells(Rows.Count, "J").End(xlUp)).TextToColumns Destination:=.Range("J1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=False
End With
End Sub

Prípadne to použiť opakovane aj na iné stĺpce (s patričnou zmenou písmena stĺpca na všetkých 3 miestach!)citovat
#052633
avatar
elninoslov, děkuji.

Podařilo se mi ještě vygooglit toto (upravil jsem pro sloupce J a M):

Sub prevod_na_cislo()

Dim sloupecJ As Range
Set sloupecJ = Range("J1:J" & Cells(Rows.Count, "J").End(xlUp).Row)

For Each r In sloupecJ
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next

End Subcitovat
#052646
avatar
Podle dat také funguje

Dim r As Range
Set r = Range("J:J")

r.NumberFormat = "General"
Range("G:G").FormulaLocal = Range("G:G").Value


Nebo lépe:

Sub Makro1()

Dim r As Range
Dim r1 As Range
Dim v() As Variant
Dim i1 As Long
Dim i2 As Long

' vybrat jen texty
Set r = Range("J:J").SpecialCells(xlCellTypeConstants, 2)
For Each r1 In r.Areas
v = r1.Value

For i1 = LBound(v, 1) To UBound(v, 1)
For i2 = LBound(v, 2) To UBound(v, 2)
If IsNumeric(v(i1, i2)) Then v(i1, i2) = CDbl(v(i1, i2))
Next i2
Next i1
r.NumberFormat = "General"
r.Value = v
Next r1
End Sub
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

Alfan • 25.4. 8:04

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 0:34

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 12:13

Jak odstraním duplicitní údaje

elninoslov • 24.4. 8:57