• DİKKAT

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

Hücredeki eski rakamın üzerine yazılan her rakamın soluna + işaretini koymak

  • Konbuyu başlatan Konbuyu başlatan izcik
  • Başlangıç tarihi Başlangıç tarihi
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
KONU: İÇİNDE BİR RAKAM YAZILI OLAN HÜCREYE DAHA SONRA BAŞKA BİR RAKAM YAZMAK İSTEDİĞİMİZDE, ESKİYİ SİLMEDEN ; SOL TARAFINA OTOMATİK + İŞARETİ GELEREK OLUŞTURMASI.


Merhaba uzmanlarım. Şöyle bir dosya için kodlara ihtiyacım var.

(Sadece A sütunu için yapılsa işimi görür)

Örnek:

A1 hücesine 10 rakamını yazdım.

ve entere bastım.

Daha sonra,

yine A1 hücresine 5 rakamını yazdım

Normalde ne olur? eski veriyi silip yenisini yazmış oluruz öyle değil mi?

Yani A1 hücresinde sadece 5 rakamı yazılı olur.

Fakat benim istediğim şudur:

Daha önce 10 rakamı yazılı olan A1 hücresine, sonradan 5 yazdığımda 10+5 olarak görünecek.. (Dikkat toplama işlemini yapmayacak, fakat hücrenin üzerine yazdığım her rakamı +X olarak gösterecek.)

Örneğe devam ediyorum. Yine A1 hücresine 8 rakamını yazdığımda A1 hücresi aynen şöyle görünecek:

10+5+8

Böyle bir kod oluşturulabilir mi acaba?

Saygılar.


Umarım ihtiyacım olan şeyi anlatabilmişimdir.
 
Bir minik ilave: Bu + işareti ilk rakamın solunda OLMAMASI lazım. Çünkü ilk rakamın da solunda + işareti olursa, otomatik toplama yapacağından hangi rakamları yazdığımı görememiş olurum. O hücreye hangi rakamları yazdığımı görmem gerekiyor.
 
Merhaba,

Aşağıdaki kodu sayfanızın kod bölümüne uygulayıp denermisiniz.

Kod:
Option Explicit
Dim Eski_Veri
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target = "" Then Exit Sub
    Cancel = True
    Application.EnableEvents = False
    If InStr(1, Target.Formula, "=") > 0 Then GoTo Son
    Target.Formula = "=" & Target.Text
Son:
    Application.EnableEvents = True
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Eski_Veri = Target
    Application.EnableEvents = False
    If Target <> "" Then Target = Eski_Veri & "+" & Target
    Application.EnableEvents = True
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Eski_Veri = Target
End Sub
 
Korhan Ayhan uzmanım olmadı ama acaba ben mi yanlış yaptım.
 

Ekli dosyalar

Çok teşekkür ederim adsoft. bir düzeltme yaparsak tam istediğim gibi olacak: Hücrelere rakam yazma işim bittiğinde, hücre içi toplamaları yapmak istiyorum. Bunun için normal yaptığım yol: F2 düğmesine basıyorum. daha sonra home düğmesine basıyorum. Sonra da + düğmesi ve enter düğmesine basarak hücre içi toplamayı yapmış oluyorum. Fakat bu dosyada aynı şekilde yaptığımda farklı bir görüntü ortaya çıkıyor.

DİYE SORUNU BİLDİRECEKTİM Kİ,

vazgeçtim;

A sütunundakileri , B sütununa kopyalarım, ve hücre içi toplamaları o şekilde yaparım. Hiç bir problem yok.

Teşekkür ederim Korhan Ayhan uzmanım ve değerli adsoft
 
Merhaba,

Üstteki mesajımdaki koda "A" sütununda çift tıklama yaptığınızda çalışacak bir prosedür daha ekledim. Bu şekilde ilgili hücre ile işiniz bittiğinde çift tıklayarak sonucu görebilirsiniz.
 
Korhan Ayhan uzmanım çift tıklama fikri harika olmuş. Ben aslında sonucu görmek için şöyle bir şey daha isteyecektim. Fakat istemeye çekinmiştim. "A" sütunu için çift tıklama değilde daha seri olabilecek (önce F2 ye basma sonra da entera basma) şeklinde daha hızlı bir ekleme yapılabilirmi acaba? Çünkü F2 VE ENTER .... F2 VE ENTER .... F2 VE ENTER ....

Hücre içi toplamalar çok daha hızlı yapılır.

(Excel kullanırken fareyi pek az kullanıyorum) (her kullandığım özellik için klavye kısayolu var)

Saygılarımla
 
Yani F2 ye bastıktan sonra home düğmesine basmaya gerek kalmadan direkt entere basıp sonucu görebilirsek çok iyi olur
 
Merhaba,

Bu durumda kodlara ek yapmak gerekecektir. Ekteki örnek dosyayı incelermisiniz.

Hücrelerde işiniz bittiğinde sadece F2 tuşuna basmanız yeterli olacaktır.

Ayrıca ondalıklı değerlerde üstteki mesajımdaki kod hata veriyordu. Bu hatada ekteki dosyada giderilmiştir.

Uygulanan kodlar;

Boş bir modüle;

Kod:
Sub F2_ENTER()
    If ActiveCell.Column <> 1 Then Exit Sub
    If ActiveCell = "" Then Exit Sub
    Application.EnableEvents = False
    If InStr(1, ActiveCell.Formula, "=") > 0 Then GoTo Son
    ActiveCell.Formula = "=" & Replace(ActiveCell.Text, ",", ".")
Son:
    Application.EnableEvents = True
End Sub


Çalışma sayfasının kod bölümüne;

Kod:
Option Explicit
Dim Eski_Veri As String
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target = "" Then Exit Sub
    Cancel = True
    Application.EnableEvents = False
    If InStr(1, Target.Formula, "=") > 0 Then GoTo Son
    Target.Formula = "=" & Replace(Target.Text, ",", ".")
Son:
    Application.EnableEvents = True
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Eski_Veri = Target
    Application.EnableEvents = False
    If InStr(1, Eski_Veri, "=") > 0 Then
    Target.Formula = Replace(Eski_Veri, ",", ".") & "+" & Replace(Target, ",", ".")
    GoTo Son
    End If
    If Target <> "" Then
        If Eski_Veri = "" Then
            Target = Target
        ElseIf Eski_Veri <> "" And InStr(1, Target, ",") > 0 Then
            Target = Replace(Eski_Veri, ".", ",") & "+" & Target
        ElseIf Eski_Veri <> "" And InStr(1, Target, ",") = 0 Then
            Target = Replace(Eski_Veri, ".", ",") & "+" & Replace(Target, ",", ".")
        End If
    End If
Son:
    Application.EnableEvents = True
End Sub
 
Private Sub Worksheet_Deactivate()
    Application.OnKey "{F2}"
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.OnKey "{F2}"
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    Eski_Veri = Target.Formula
    Application.OnKey "{F2}", "F2_ENTER"
End Sub


Çalışma kitabının kod bölümüne;

Kod:
Private Sub Workbook_Activate()
    Application.OnKey "{F2}", "F2_ENTER"
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "{F2}"
End Sub
 
Private Sub Workbook_Deactivate()
    Application.OnKey "{F2}"
End Sub
 

Ekli dosyalar

Korhan Ayhan uzmanım şahane görünüyor. Tam istediğim gibi. Biraz daha inceliyorum. Emekleriniz için teşekkür ederim.
 
Uzmanım bir tek şey var, eğer hesaplamalarda yanlış sonuç vermez ise hiç önemli bir şey değil. Yazılan ilk rakam ondalıklık yazılırsa (örnek: 1,5) uyarı işareti çıkıyor ve "metin olarak saklanan sayı" ibaresi çıkıyor. Oysa hücrenin biçimi metin değil. Bunun dışında hiç bir sorun yok. İşimi gördünüz her zamanki gibi uzmanım.
 
Merhaba,

İlk girilen ondalıklı sayı problemide halledildi. Üstteki mesajımdaki dosyayı ve kodları güncelledim.

Uzmanım bir tek şey var, eğer hesaplamalarda yanlış sonuç vermez ise hiç önemli bir şey değil. Yazılan ilk rakam ondalıklık yazılırsa (örnek: 1,5) uyarı işareti çıkıyor ve "metin olarak saklanan sayı" ibaresi çıkıyor. Oysa hücrenin biçimi metin değil. Bunun dışında hiç bir sorun yok. İşimi gördünüz her zamanki gibi uzmanım.
 
Sağolun Korhan Ayhan uzmanım. Bir şey dikkatimi çekti son dosyada; örnek: A1 hücresine 1,5 yazdık, sonra yine A1 hücresine ikinci ondalıklık sayıyı yazınca (mesela 2,5) ikinci yazılan rakam şöyle görünüyor: 2.5
Yani arada virgül olması gerekirken nokta olarak görünüyor.

A1 hücresinin görünümü şöyle oluyor: 1,5+2.5

Tamamen bilinçsizce şunu yapmayı denedim; (belki tutar diye) kodlardaki . (nokta) işaretlerini , (virgül) olarak değiştirdim. Olmadı, hata verdi : )

Ama sizin yaptığınız haliyle toplamalarda herhangi bir hata yok uzmanım.
 
Merhaba,

Son isteğinize göre üstteki mesajımdaki dosyayı ve kodları güncelledim. Denermisiniz.
 
Korhan Ayhan uzmanım bu hata giderilmiş faka F2 ye basınca neden sağdaki hücreye gidiyor? Alt hücreye gitse daha iyi olur. Ya da önceki gibi kendi hücresinde kalsa bence daha kullanışlı olur. Çünkü F2 düğmesine ve ardından entere basmak gibi bir alışkanlık var..
 
Merhaba,

#10 nolu mesajımdaki kodları ve dosyayı güncelledim. İncelermisiniz.
 
Geri
Üst