• DİKKAT

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

1,2,3,4,5 rakamları yerine A,B,C,D,E yazılması

  • Konbuyu başlatan Konbuyu başlatan xternet
  • Başlangıç tarihi Başlangıç tarihi

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
462
Excel Vers. ve Dili
2010 Tr
Merhaba arkadaşlar,

Öğretmenim ve yaptığım test sınavlarının cevap anahtarlarını girdiğim ve sonuçlarını değerlendirdiğim bir excel çalışmam var. Ortak yaptığımız sınavlarda bu çalışmayı kullanıyoruz ve sınıflar arasındaki başarı düzeylerini konu konu ve soru soru değerlendiriyoruz.
Bu çalışmada en büyük sıkıntı tüm cevap kağıtlarının manuel girilmesi. Yani optik okuyucu sistemi yok. Yapmaya çalıştığım bu işi biraz daha pratikleştirmek.

Klavyeden A, B, C, D, E şıklarını girme işini biraz daha hızlı hale getirmek için açaba bu işi 1, 2, 3, 4, 5 tuşlarına atayabilirmiyiz? Yani cevap anahtarlarının işlendiği sayfada mesela M19:AK828 hücre aralığındaki hücrelerde, 1 tıklandığında A, 2 tıklandığında B, 3 tıklandığında C, 4 tıklandığında D ve 5 tıklandığında E harfleri o anki aktif hücreye yazılsın. Yalnız kişi 1,2,3,4,5 değilde A,B,C,D,E yi tıklayarak cevap girmek istediğinde de yine girebilsin. Yani bahsi geçen hücreler sadece 1,2,3,4,5 değerleri için çalışmasın. Tercihe göre A dendiğinde A yazsın, 1 dendiğinde de A yazsın.

Bu şekilde veri girişine hız kazandırabileceğimi düşündüm. Gereksiz bir ayrıntı olarak görülebilir tabi.
Vakti olan ve ilgilenen arkadaşlara şimdiden telşekkür ederim.
İyi çalışmalar.
 
örnek dosya ekleseydiniz belki daha rahat çözüm üretebilirdik.
a1 hücresine rakam yazıp b1 hücresinde
Kod:
=ARA(A1;{1;2;3;4;5};{"A";"B";"C";"D";"E"})
bu formülü giriniz
 
Merhaba,
Makro isterseniz, Aşağıdaki kodu ilgili sayfanın kod bölümüne kopyalayın.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Son
If Intersect(Target, [M1:AK828]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
[COLOR="DarkRed"]If Not IsNumeric(Target) Then GoTo Son[/COLOR]
deg = "ABCDE"
Application.EnableEvents = False
Target = Mid(deg, Target, 1)
Son:
Application.EnableEvents = True
End Sub
 
Son düzenleme:
Sayın Tank ve Sayın leumruk;
Öncelikle ilginiz ve çözümleriniz için teşekkür ederim.
Yalnız Sayın leumruk'un çözümü tam olarak aradığım çözüm. Bundan daha iyisi olamazdı.
Zihninize sağlık. Tekrar teşekkürler.
 
Sayın Tank ve Sayın leumruk;
Öncelikle ilginiz ve çözümleriniz için teşekkür ederim.
Yalnız Sayın leumruk'un çözümü tam olarak aradığım çözüm. Bundan daha iyisi olamazdı.
Zihninize sağlık. Tekrar teşekkürler.
Sn. xternet,
Rica ederim. "Bundan daha iyisi olamazdı." ifadesini görünce kafama takıldı ve koda alıcı gözüyle baktım. Eklenecek bir satırla kodun daha iyi olabileceğini farkettim. Bir önceki mesajımı güncelledim. Yeni şekliyle kullanmanız daha uygun olacaktır.
 
Kodun yeni şeklini de uyguladım. Sanırım gözle görülür bir farkllık yok.
Yalnız merak ettiğim için soruyorum. Eklediğiniz satırın oluşturduğu fark nedir?
 
Kodun yeni şeklini de uyguladım. Sanırım gözle görülür bir farkllık yok.
Yalnız merak ettiğim için soruyorum. Eklediğiniz satırın oluşturduğu fark nedir?
Numerik olmayan bir değer girildiğinde eski kod hata veriyordu. Eklediğim satırla eğer girilen veri numerik değilse işlemi sonlandır emri vermiş oldum.
Hatayı farkedemiyorsunuz; çünkü kodun başında hata olduğunda işlemi sonlandırmaya yarayan bir kod var. Bu kodu ekleme amacım farklıydı. Daha iyi anlayabilmek için kodu aşağıdaki gibi deneyin. Sorunun ne olduğunu anlayacaksınız.
Denem işleminden sonra Events olayı false olduğundan kodlar bir daha çalışmayacaktır. Dosyayı kapatıp açarak bu sorunun önüne geçebilirsiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [M1:AK828]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
deg = "ABCDE"
Application.EnableEvents = False
Target = Mid(deg, Target, 1)
Application.EnableEvents = True
End Sub
 
Bende alternatif bir öneride bulunmak istiyorum.

Aslında bu işlemi araçlar menüsündeki otomatik düzeltme seçenekleri özelliği ile de yapabilirsiniz. Bu özellikte "1" yerine "A", 2 yerine "B" yaz gibi bir tanımlama yapabilirsiniz. Bu uygulamanın tek dezavantajı tüm hücrelerde ve çalışma kitaplarında geçerli olmasıdır. Bunuda sadece istediğiniz aralık yada çalışma kitabında çalışacak şekilde yazacağınız bir makro ile sınırlandırabilirsiniz.
 
Geri
Üst