Archive for May 2008


Excel’de Veri Doğrulama

May 9th, 2008 — 10:53pm

Microsoft Excel de bir hücreye girilmesini istediğiniz veri türünü sınırlayabilirsiniz. Örneğin, yalnızca 1 ile 10 arasındaki sayıların girilmesine izin verebilirsiniz. Bu sınırlamayı “Veri doğrulama” ile yapabiliriz.

Excel veri doğrulama - validation

Veri doğrulama özelliğinin amacı kullanıcıların geçersiz veri girmelerini önlemektir.

Uygulamak için, uygulamak istediğimiz hücreyi veya hücreleri seçip, Veri menüsünde Veri doğrulama düğmesine basmalıyız. Komut çalıştığında karşımıza veri doğrulama penceresi gelir. “Ayarlar” sekmesinde izin verilen değerleri belirleyebiliyoruz.

İlk örnekte 1 ile 10 arasındaki tam sayılara izin verelim. “İzin verilen değer”de tam sayısı seçip. “En az” için 1 “En Fazla” için 10 girelim.

Excel veri doğrulama - validation

Tamam’a bastığımızda seçtiğimiz hücre için belirlediğimiz aralık dışında bir değer girilememesini sağlamış oluruz. Veri doğrulama ekranında 2 sekme daha var. “Girdi iletisi” ve “Hata Uyarısı”. Bu sekmelerle de neler yapabileceğimiz adlarından malum. Girdi iletisi sekmesinde o hücreyi seçtiğinizde açılacak bir uyarı yazısı, ipucu belirliyorsunuz. (tooltip gibi) Hata uyarısında da yanlış değer girildiğinde nasıl bir uyarı verelim onu belirliyorsunuz.

Excel veri doğrulama - validation

Veri doğrulamayı, başvuru formülleri ile ileri düzeyde kullanabiliriz. Örneğin yapılan bir seçime göre hücrenin içine gelecek değerleri kısıtlamak isteyebiliriz ve o değerler bir listeden gelsin isteriz. Bunu bir örnekle daha rahat açıklayabiliriz.

Elimizde alt gurupları olan bir ürün grubu var diye düşünebiliriz. Ligler ve o liglerden her birinde 3 er takım var. 9 takımdan 1 takım seçmek yerine bir üst grubu belirleyip yalnızca gerekli 3 takımı göstereceğiz.

Eğer hücrede “birinci lig” seçili ise yanındaki hücredeki doğrulama birinci lig takımlarının listesi olacak. Bu örneği hazırlamak için önce aşağıdaki tabloyu hazırlayalım.

Excel veri doğrulama - validation

Tablomuzu hazırladıktan sonra tablonun sütunlarında “Ad Tanımlama” işlemi yapacağız.

Ad tanımlama nedir kısaca bir açıklayalım. Excel’de bir hücrenin adresi vardır. Mesela A4; biz o hücreye ad tanımlama ile özel bir ad verebiliriz. Bir hücreyi “Toplam” olarak adlandırabiliriz. Ya da bir hücre aralığını; (A2:A4) “Ligler” olarak adlandırabiliriz.

Excel veri doğrulama - validation

Ad tanımlama işlemi A1 hücresinin hemen üstündeki ad kutusundan yapılabilir. Bir hücre ya da aralık seçersiniz. Ad kutusuna tıklar vermek istediğiniz adı yazar “enter” a basarsınız. Bundan sonra seçtiğiniz hücre yada hücreler o şekilde çağırılabilir. Bu şekilde =topla(Sayilar) gibi bir formül çalıştırmak mümkündür.

Bu örnekte Ad tanımlama için bir kolaylık söz konusu. Formüller menüsünde “Tanımlı Adlar” diye bir alan var. Orda seçimden oluştur komutu var. Bu komutu kullanarak, hazırladığımız tablonun sütunlarına hızlıca adlandırma yapacağız

  1. Tabloyu seç
  2. Formüller menüsünden “Seçimden oluştur” komutuna tıkla
  3. Açılan ekrandan sadece “üst satırı” seç

Şu anda sütunlar özel olarak adlandırıldı. Örneğin; A2:A4 aralığı “ligler” olarak adlandırıldı.

Şimdi tablonun biraz altında bir hücre seçelim. Bu hücrede ligler başlığının altındaki değerlerden oluşan bir liste doğrulaması yapacağız.

  1. Hücreyi seç
  2. Veri menüsünden Veri doğrulamaya tıkla
  3. İzin verilen değerde “liste” değerini seç
  4. Kaynak kısmına =ligler yaz

Şu anda seçtiğiniz hücrede bir doğrulama çalışıyor. Hücrenin yanında bir ok çıktı. O oka bastığımızda girilebilecek değerleri gösteriyor. Şimdi bir yandaki hücrede de bir doğrulama yapacağız. Bu doğrulama da seçilmiş olan değeri baz alarak o değerle
adlandırılmış aralığı doğrulama olarak kullanacak. Yani birinci_lig seçilmişse yandaki hücreye sadece bjk, fb ve gs yazılabilecek.

Excel veri doğrulama - validation

Bu işlem için DOLAYLI() adında bir formül kullanacağız. Hücrenin içindeki değeri adres olarak veri doğrulamasına vermemizi sağlayacak. Yani birinci_lig olarak adlandırdığımız aralığı veri doğrulamasına verebileceğiz.

  1. Hücreyi seç
  2. Veri menüsünden Veri doğrulamaya tıkla
  3. İzin verilen değerde “liste” değerini seç
  4. Kaynak kısmına =DOLAYLI(A7) yaz (A7 tablonun altında seçtiğiniz ilk hücrenin adresi.)

Şimdi ikinci doğrulama uyguladığımız hücre birinci ile bağımlı çalışmakta.

1 comment » | Excel

Online Çoktan Seçmeli Sınav

May 2nd, 2008 — 8:49pm

Askerliğimi; KİEM (Kamu İnternet eğitim merkezi) sorumlusu olarak ve erlere bilgisayar öğreterek geçirdim. Bilgisayar nedir? Nasıl çalışır? Gibi temel soruların cevaplarını öğrettim diyebilirim.

Eğitim sonunda askerlere birde seviye tespit sınavı yapıyorduk. Her 2 hafta da bir 120 askere sınav yapıp onların kağıtlarını okumak ve o kağıtlara notlar verip birde o notları excel tablosunda raporumsulamak gerekiyordu.

Bir programcı olarak durumdan kendime vazife çıkardım ve intranetten askerlere bir sınav hazırladım. Herkes oturduğu yerden 5 dakikada sınav oluyordu. Ve anında kaç aldığını öğreniyordu. Ben anında herkesin sonuçlarını görüyordum ve excel’e kaydediyordum. Excel’de de bir pivottable ile işimi bitiriyordum.

Yurdum insanı çakal olduğu için kopya çekmesin diye de her öğrenciye veritabanından rasgele çoktan seçmeli 5 soru geliyordu.

Sınav sorularının tam olarak bilgiyi ölçmesinin arkasında değilim. Çok iyi sorular değil ama içinde bulunduğum koşullar içinde son derece yeterli olduğunu söyleyebilirim :)

Sınav sistemini asp.net ile Visual Studio 2008 de hazırladım.

Benzer bir durumda askerliğini KİEM sorumlusu olarak yapacak arkadaşlara armağanımdır. :)

Visual Studio 2008 ile Hazırlandı

Kodları İndirmek İçin Tıklayınız

private void SorulariOlustur()
{
    try
    {
        ScriptManager sm = new ScriptManager();
        sm.ID = "sm1";
        Page.Form.Controls.Add(sm);
 
        UpdatePanel up1 = new UpdatePanel();
        up1.ID = "UpdatePanel1";
        up1.UpdateMode = UpdatePanelUpdateMode.Conditional;
 
        Session.Add("Not", 0);
 
        Soru[] _Sorular = new Soru[5];
 
        try
        {
            _Sorular = (Soru[])Session["SorularNesnesi"];
        }
        catch (Exception ex)
        {
            try
            {
                Session.Remove("Hata");
            }
            catch (Exception)
            {
 
            }
            finally
            {
                Session.Add("Hata", ex.Message);
                Response.Redirect("Hata.aspx", false);
            }
        }
 
        Literal ltr;
 
        Random rnd = new Random();
 
        for (int i = 0; i < _Sorular.Length; i++)
        {
            ltr = new Literal();
            ltr.ID = "ltr" + i.ToString();
            ltr.Text = "<br/><b>Soru " + Convert.ToString(i + 1) + " : </b>" 
            + _Sorular[i].SoruMetni + "<br/><br/>";
 
            up1.ContentTemplateContainer.Controls.Add(ltr);
 
            if (_Sorular[i].IsCoktanSecmeli)
            {
                RadioButtonList rbl = new RadioButtonList();
                rbl.ID = "rbl" + i.ToString();
 
                //Şıkları Karıştıma Kısmısı
 
                ArrayList _cevaplar = new ArrayList();
                int _uzunluk = _Sorular[i].Cevaplar.Length;
                int _taban = 0;
 
                for (int j = 0; j < _uzunluk; j++)
                {
                    _cevaplar.Add(_Sorular[i].Cevaplar[j]);
                }
                Session.Add(rbl.ID, _Sorular[i].DogruCevap);
 
 
                int _sayi = rnd.Next(_taban, _uzunluk);
 
                ArrayList _rasgeleSayilar = new ArrayList();
 
                ArrayList _yeniArray = new ArrayList();
 
                for (int k = 0; k < _cevaplar.Count; k++)
                {
                    _yeniArray.Add(_cevaplar[_sayi].ToString());
                    _rasgeleSayilar.Add(_sayi);
 
                    do
                    {
                        if (_yeniArray.Count != _cevaplar.Count)
                        {
                            if (_sayi == _taban)
                            {
                                _taban++;
                            }
 
                            if (_sayi == _uzunluk - 1)
                            {
                                _uzunluk--;
                            }
 
                            _sayi = rnd.Next(_taban, _uzunluk);
                        }
                        else
                        {
                            break;
                        }
                    }
                    while (_rasgeleSayilar.Contains(_sayi));
                }
 
                for (int l = 0; l < _yeniArray.Count; l++)
                {
                    rbl.Items.Add(_yeniArray[l].ToString());
                }
 
                /////////////////////////////////////////////////
 
                up1.ContentTemplateContainer.Controls.Add(rbl);
            }
            else
            {
                TextBox txt = new TextBox();
                txt.ID = "txt" + i.ToString();
                txt.TextMode = TextBoxMode.MultiLine;
                txt.Width = 250;
                txt.Height = 60;
 
                Session.Add(txt.ID, _Sorular[i].DogruCevap);
 
                up1.ContentTemplateContainer.Controls.Add(txt);
            }
 
            ltr = new Literal();
            ltr.ID = "ltr2" + i.ToString();
            ltr.Text = "<br/><br/>";
            up1.ContentTemplateContainer.Controls.Add(ltr);
        }
 
        Button button1 = new Button();
        button1.ID = "Button1";
        button1.Text = "Sınavı Bitir";
        button1.Click += new EventHandler(Button_Click);
 
        ConfirmButtonExtender cbe = new ConfirmButtonExtender();
        cbe.ID = "cbe1";
        cbe.ConfirmText = "Sınavı Bitirmek İstediğine Emin Misin?";
        cbe.TargetControlID = "Button1";
 
        Page.Form.Controls.Add(cbe);
 
        Page.Form.Controls.Add(up1);
        Page.Form.Controls.Add(button1);
    }
    catch (Exception ex)
    {
        try
        {
            Session.Remove("Hata");
        }
        catch (Exception)
        {
 
        }
        finally
        {
            Session.Add("Hata", ex.Message);
            Response.Redirect("Hata.aspx", false);
        }
    }
}

7 comments » | Asp.Net


Back to top