• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Virgülleri Noktaya Dönüştürmek

Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Merhaba Arkadaşlar,
Aralıktaki virgülleri noktaya çevirmek istiyorum. Makroyu hazırlarken çalışıyor ma bitmiş makroyu çalıştırınca dönüşmüyor. Buna çare var mıdır ?

Not : Paylaşım yaparken Markro kodlarını kod formunda yazmak için ne yapmak lazım ? nasıl yazdıysam olmadı :(
Code
Sub DEGISTIR()
Range("A1:A1000").Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
 
Merhaba
Halit 3 Hocamın kodları belki işini görür
noktaları virgül, virgülleri nokta yapıyor
Kod:
Sub noktavirgulduzelt()

Range("A1:A1000").Select

With Application

CalcMode = .Calculation

.Calculation = xlCalculationManual

.ScreenUpdating = False

.EnableEvents = False

End With

Dim cell As Range

nokta = "."

virgul = ","

For Each cell In ActiveWindow.RangeSelection.Cells

deg1 = Split(cell.Value, nokta)

deg2 = Split(cell.Value, virgul)

hucre = cell.NumberFormat

cell.NumberFormat = "@"

veri = ""

k = 0

kk = 0

If IsNumeric(cell.Value) = True Then

If UBound(deg1) > 0 Then

For i = 0 To Val(UBound(deg1))

k = k + 1

If k = 1 Then

veri = deg1(i)

Else

veri = veri & virgul & deg1(i)

End If

Next

If UBound(deg1) = 1 Then

cell.Value = veri * 1

Else

cell.Value = veri

End If

ElseIf UBound(deg2) > 0 Then

For i = 0 To Val(UBound(deg2))

kk = kk + 1

If kk = 1 Then

veri = deg2(i)

Else

veri = veri & nokta & deg2(i)

End If

Next

cell.Value = veri

Else

cell.Value = veri

End If

Else

If UBound(deg1) Then

For i = 0 To Val(UBound(deg1))

k = k + 1

If k = 1 Then

veri = deg1(i)

Else

veri = veri & virgul & deg1(i)

End If

Next

cell.Value = veri

End If

If UBound(deg2) Then

For i = 0 To Val(UBound(deg2))

kk = kk + 1

If kk = 1 Then

veri = deg2(i)

Else

veri = veri & nokta & deg2(i)

End If

Next

cell.Value = veri

End If

cell.Value = cell.Value

End If

cell.NumberFormat = hucre

Next

With Application

.ScreenUpdating = True

.EnableEvents = True

.Calculation = CalcMode

End With

End Sub
 
Son düzenleme:
Mesaj yazılan pencerede bulunan üç nokta menüsüne tıklayıp kodlarınızı foruma ekleyebilirsiniz.

217336

Diyelim ki menüden </>Kod yazan seçeneği seçtiniz. Karşınıza aşağıdaki ekran gelecektir. Dilerseniz DİL bölümünden seçim yaparak paylaştığınız kod diline göre seçim yapabilirsiniz.

217339
 
Merhaba
Halit 3 Hocamın kodları belki işini görür
noktaları virgül, virgülleri nokta yapıyor
Sub noktavirgulduzelt()
Range("A1:A1000").Select
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With

Dim cell As Range

nokta = "."
virgul = ","

For Each cell In ActiveWindow.RangeSelection.Cells



deg1 = Split(cell.Value, nokta)
deg2 = Split(cell.Value, virgul)

hucre = cell.NumberFormat
cell.NumberFormat = "@"
veri = ""
k = 0
kk = 0
If IsNumeric(cell.Value) = True Then
If UBound(deg1) > 0 Then
For i = 0 To Val(UBound(deg1))
k = k + 1
If k = 1 Then
veri = deg1(i)
Else
veri = veri & virgul & deg1(i)
End If
Next

If UBound(deg1) = 1 Then
cell.Value = veri * 1
Else
cell.Value = veri
End If

ElseIf UBound(deg2) > 0 Then

For i = 0 To Val(UBound(deg2))
kk = kk + 1
If kk = 1 Then
veri = deg2(i)
Else
veri = veri & nokta & deg2(i)
End If
Next
cell.Value = veri
Else
cell.Value = veri
End If

Else

If UBound(deg1) Then
For i = 0 To Val(UBound(deg1))
k = k + 1
If k = 1 Then
veri = deg1(i)
Else
veri = veri & virgul & deg1(i)
End If
Next
cell.Value = veri
End If

If UBound(deg2) Then
For i = 0 To Val(UBound(deg2))
kk = kk + 1
If kk = 1 Then
veri = deg2(i)
Else
veri = veri & nokta & deg2(i)
End If
Next
cell.Value = veri
End If

cell.Value = cell.Value

End If
cell.NumberFormat = hucre
Next

With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalcMode
End With

End Sub
Numan şamil üstadım desteğin için teşekkür ediyorum. Kodu uygulamadım. Ama çalışması çok uzun sürüyor ve 5 dakikadır bitmedi. Daha kısa bir yöntem olabilir mi !
 
Ben bilgiayarımda 3000 satıra uyguladım 5-6 sn sürdü
sizin veriler kaç satırlık
 
Sayılardaki virgülü noktaya veya başka bir karaktere çevirmek mümkün mü ?
 
bu kod herhalde beni poek sevmedi :)
800 satırda 10 dakikadır dönüp duruyor
ayrıca virgülleri nokta yapmadı
eminim sizde çalışıyordur ama daha pratik bir çözüm olsa daha iyi olur
 
Bütün sorunun kaynağı örnek dosya olmaması...
 
Korhan Ayhan üstadım. Örnek dosya yükledim. İlginize şimdiden çok teşekkürler
 

Ekli dosyalar

Deneyiniz. Ben olumlu sonuç aldım.

C++:
Sub Test()
    With Range("A:A")
        .TextToColumns Destination:=.Cells(1, 1), FieldInfo:=Array(1, 2)
        .NumberFormat = "@"
        .Replace ",", " "
        .Replace " ", "."
        .TextToColumns Destination:=.Cells(1, 1), FieldInfo:=Array(1, 2)
    End With
End Sub
 
Alternatif :
Kod:
Sub noktayacevir()
With Application
.DecimalSeparator = "."
.UseSystemSeparators = False
End With
End Sub
 
Teşekkürler üstad leguminosea, elinize sağlık. sağlıcakla kalın
 
Deneyiniz. Ben olumlu sonuç aldım.

C++:
Sub Test()
    With Range("A:A")
        .TextToColumns Destination:=.Cells(1, 1), FieldInfo:=Array(1, 2)
        .NumberFormat = "@"
        .Replace ",", " "
        .Replace " ", "."
        .TextToColumns Destination:=.Cells(1, 1), FieldInfo:=Array(1, 2)
    End With
End Sub
Üstad mükemmel bir kod, çok çok teşekkür ediyorum, sağlıcakla kaln
 
Geri
Üst