- Katılım
- 2 Şubat 2014
- Mesajlar
- 760
- Excel Vers. ve Dili
- 2007 Türkçe
Merhaba arkadaşlar.
Buradan bir kez daha teşekkür ediyorum kendisine. Aşağıda ki kod
Sayın Korhan Hocanın dır. Ellerine sağlık.
Benim sorunum ise şu:
Sayfa1 den ondalık sayıları (virgüllü) dataya gönderiyorum.
Bu sayıları tekrar istediğimde ise virgül yerine nokta lı şekilde geliyor.
Ve bu sayıları tekrar göndermek istedğimde ise noktalar da siliniyor
ve sayı tam sayıya dönüşüyor. 20,345 sayısı 20345 oluyor.
Bu her sayıda olmuyor elbette. Sorun da burada zaten. Arada bazılarında oluyor.
Bu sebeple de teşhisini koyamadım maalesef.
Sayın Korhan Hocamın ve siz konuya hakim kişilerin değerli fikirlerini bekliyorum.
Ne yapabilir acaba ?
Sub Makro4()
Dim s1 As Worksheet, s2 As Worksheet, son As Long
Dim Zaman As Double, Dizi As Variant, s As Long, k As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Data")
'*************************************************************
tr = s2.Cells(s2.Rows.Count, "D").End(3).Row
Dizi = s2.Range("D1:T" & tr).Value
With CreateObject("Scripting.Dictionary")
For s = 3 To UBound(Dizi, 1)
.Item(Dizi(s, 3) & Dizi(s, 4) & Dizi(s, 5)) = Dizi(s, 7) & "#" & Dizi(s, 8) & "#" & Dizi(s, 9) & "#" & Dizi(s, 11) _
& "#" & Dizi(s, 12) & "#" & Dizi(s, 13) & "#" & Dizi(s, 14) & "#" & Dizi(s, 15) & "#" & Dizi(s, 16)
Next
'**************************************************************************************************
ws = s1.Cells(s1.Rows.Count, "H").End(3).Row
Dizi = s1.Range("F1:W" & ws).Value
For k = 2 To UBound(Dizi, 1)
If .exists(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)) Then
Dizi(k, 8) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(0)
Dizi(k, 9) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(1)
Dizi(k, 11) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(2)
Dizi(k, 12) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(3)
Dizi(k, 13) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(4)
Dizi(k, 14) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(5)
Dizi(k, 15) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(6)
Dizi(k, 16) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(7)
End If: Next
End With
s1.Range("F1:W" & UBound(Dizi)) = Dizi
Set s1 = Nothing: Set s2 = Nothing
Application.ScreenUpdating = True
End Sub
Buradan bir kez daha teşekkür ediyorum kendisine. Aşağıda ki kod
Sayın Korhan Hocanın dır. Ellerine sağlık.
Benim sorunum ise şu:
Sayfa1 den ondalık sayıları (virgüllü) dataya gönderiyorum.
Bu sayıları tekrar istediğimde ise virgül yerine nokta lı şekilde geliyor.
Ve bu sayıları tekrar göndermek istedğimde ise noktalar da siliniyor
ve sayı tam sayıya dönüşüyor. 20,345 sayısı 20345 oluyor.
Bu her sayıda olmuyor elbette. Sorun da burada zaten. Arada bazılarında oluyor.
Bu sebeple de teşhisini koyamadım maalesef.
Sayın Korhan Hocamın ve siz konuya hakim kişilerin değerli fikirlerini bekliyorum.
Ne yapabilir acaba ?
Sub Makro4()
Dim s1 As Worksheet, s2 As Worksheet, son As Long
Dim Zaman As Double, Dizi As Variant, s As Long, k As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Data")
'*************************************************************
tr = s2.Cells(s2.Rows.Count, "D").End(3).Row
Dizi = s2.Range("D1:T" & tr).Value
With CreateObject("Scripting.Dictionary")
For s = 3 To UBound(Dizi, 1)
.Item(Dizi(s, 3) & Dizi(s, 4) & Dizi(s, 5)) = Dizi(s, 7) & "#" & Dizi(s, 8) & "#" & Dizi(s, 9) & "#" & Dizi(s, 11) _
& "#" & Dizi(s, 12) & "#" & Dizi(s, 13) & "#" & Dizi(s, 14) & "#" & Dizi(s, 15) & "#" & Dizi(s, 16)
Next
'**************************************************************************************************
ws = s1.Cells(s1.Rows.Count, "H").End(3).Row
Dizi = s1.Range("F1:W" & ws).Value
For k = 2 To UBound(Dizi, 1)
If .exists(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)) Then
Dizi(k, 8) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(0)
Dizi(k, 9) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(1)
Dizi(k, 11) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(2)
Dizi(k, 12) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(3)
Dizi(k, 13) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(4)
Dizi(k, 14) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(5)
Dizi(k, 15) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(6)
Dizi(k, 16) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(7)
End If: Next
End With
s1.Range("F1:W" & UBound(Dizi)) = Dizi
Set s1 = Nothing: Set s2 = Nothing
Application.ScreenUpdating = True
End Sub
