İki Şehir Seçerek Saklı Mesafe Tablosundaki Değeri Bulma
Bu çalışma kitabı, mevcut bir şehirler arası mesafe matrisinden iki seçimle tek bir değer sorgular. Mesafeler adlı görünür sayfa ile mesafe adlı VBA kullanıcı formu birlikte çalışır. Formdaki iki seçim kutusu başlangıç ve karşılaştırılacak şehri belirler; sonuç aynı formun etiket alanında gösterilir. Dosya yeni bir mesafe matrisi üretmez, çevrim içi harita servisine bağlanmaz ve güncel yol güzergâhını hesaplamaz.Kaynak dosya tarihsel bir XLS çalışma kitabıdır. Saklı değerler ve şehir etiketleri özgün biçimleriyle korunmuştur. Bu değerlerin güncel yol mesafeleriyle veya resmî bir ulaşım veritabanıyla karşılaştırıldığı iddia edilmez. Kullanım amacı mevcut matris üzerinden seçim ve arama mantığını incelemektir. İndirilebilir dosyaya onarım uygulanmamış, yeni çalışma kitabı sürümü oluşturulmamıştır; özgün sürüm ve dosya hash değeri korunmuştur.
Mesafeler Sayfasının Yapısı
Mesafeler sayfasında şehir adları yatay başlıklar ve dikey satır etiketleri halinde yer alır. Kesişim hücreleri saklı sayısal mesafe değerlerini içerir. Temel sorgu, bir şehrin satırını ve diğer şehrin sütununu bulup kesişim değerini getirir. Böylece çok sayıda hücre arasında elle satır ve sütun takip etmek yerine üst giriş alanları veya kullanıcı formu kullanılabilir.B1 hücresi hesaplanan sonuç alanıdır. A1 ve A2 hücreleri iki şehir seçimini taşır. Bu hücrelerdeki metinler matris etiketleriyle eşleşmelidir. Büyük bir tablodaki benzer görünen adların yazımı, boşlukları veya tarihsel isimleri değiştirilirse arama sonucunun değişebileceği dikkate alınmalıdır. Kaynakta Antakya ve İzmit gibi mevcut etiketler korunur; bunlar başka şehir adlarıyla otomatik olarak standartlaştırılmamıştır.
Asıl arama formülü B3:CE83 ve C1:CE83 aralıklarını kullanır. İlk aralık dikey şehir eşleşmesini ve sayısal kesişim değerini, ikinci aralık yatay başlık bilgisini sağlar. Bu sabit aralıklar kaynak tasarımının parçasıdır. Çalışma sayfasına yeni bir satır veya sütun eklemek, bütün arama kapsamının kendiliğinden doğru şekilde genişleyeceği anlamına gelmez. Tabloyu büyütmek isteyen bir kullanıcı ilgili formülü ve seçim listesini birlikte incelemelidir.
Düşey ve Yatay Aramanın Birlikte Kullanılması
B1 formülünde VLOOKUP ve HLOOKUP birlikte kullanılır. VLOOKUP ilk şehir metnini dikey şehir listesinde arar. HLOOKUP ikinci şehrin başlık bilgisinden hangi sütunun seçileceğini belirlemeye yardımcı olur. Hesaplanan sütun numarasına kaynakta bir eklenir ve dikey arama ilgili sayısal değeri döndürür. Bu yaklaşım, iki farklı yönde tutulan etiketleri tek bir sonuç hücresinde birleştirir.Formül ayrıca IF, ISERROR, AND ve LEN işlevlerini içerir. İki şehir girişinin de dolu olması kontrol edilir; arama hatası oluştuğunda sonuç boş metin olarak gösterilir. Bu nedenle boş sonuç sıfır mesafe ile aynı anlamda değildir. Aynı şehir iki tarafta seçildiğinde saklı matrisin köşegenindeki sıfır değer görünür; boş veya bulunamayan girişte ise boş sonuç oluşabilir.
Doğrudan hücre girişleriyle yapılan bağımsız testte boş ve tabloda bulunmayan şehir metinleri boş sonuç vermiştir. Bu davranış çalışma kitabının hata gizleme tercihini doğrular. Ancak boş görünümün nedenini ayrıntılı açıklayan bir uyarı metni yoktur. Sonuç alınamadığında girişlerin doluluğu ve matris etiketleriyle birebir uyumu kontrol edilmelidir; boş hücre başarılı bir mesafe ölçümü olarak yorumlanmamalıdır.
VBA Kullanıcı Formu ve Seçim Olayları
mesafe kullanıcı formundaki ComboBox1 ve ComboBox2 kontrolleri şehir seçimi için kullanılır. İlk kontrolün değişim olayı Mesafeler sayfasının A1 hücresine, ikinci kontrolün değişim olayı A2 hücresine seçilen değeri yazar. Her iki olay da B1 hücresindeki hesaplanmış değeri Label3 sonuç etiketine aktarır. Form, ayrı bir hesaplama algoritması yerine çalışma sayfasındaki mevcut formülü kullanır.Formun etkinleşme yordamı ilk seçim kutusunu ilk, ikinci seçim kutusunu ikinci liste öğesine ayarlar. Kaynakta iller adlı adlandırılmış aralık Mesafeler sayfasının B3:B100 alanına bağlıdır. Bu aralık gerçek şehir satırlarından daha aşağıya uzandığı için seçim listesindeki öğe sayısı matrisin dolu şehir sayısıyla aynı olmak zorunda değildir. Boş bir liste öğesi veya geçersiz metin sonuç vermeyebilir.
Kaynakta auto_open yordamı formu açar. Makrolar devre dışı bırakılmışsa bu otomatik arayüz davranışı çalışmaz. Yerel doğrulamada özgün dosya üzerinde otomatik açılış yordamı çağrılmamış; özel kopyada form kontrollerinin değişmemiş olayları kontrollü olarak kullanılmıştır. Böylece testin kapsamı açık tutulmuş ve indirilecek dosyada kalıcı kod değişikliği yapılmamıştır.
Çalışma kitabında Makro1, Makro2 ve Makro3 adlı eski kaydedilmiş yardımcı yordamlar da bulunur. Bunlar aktif hücreye göre formül yazan ve seçim yapan işlemler içerir. Şehir sorgusunun ana akışı bu yordamları rastgele çalıştırmayı gerektirmez. Yanlış aktif hücrede çalıştırılmaları çalışma sayfasındaki bir hücreyi değiştirebilir; bütün yordamların her bağlamda güvenli bir genel araç olduğu iddia edilmez. Özgün kodlar dosyada korunmuştur.
Gerçek Excel Testlerinin Gösterdiği Davranış
Üretici ve bağımsız kontroller farklı şehir çiftlerini kullanmıştır. Form üzerinden yapılan seçimlerin A1 ve A2 girişlerine taşındığı, B1 sonucunun ve Label3 etiketinin saklı matris kesişimiyle eşleştiği görülmüştür. Adana ile Adıyaman, Bilecik ile Diyarbakır ve Antakya ile İzmit gibi farklı örnekler kaynak tablodaki hücre değerleriyle karşılaştırılmıştır. Buradaki sayılar dış bir harita servisinden alınmamıştır.Bağımsız testte Afyon ile Ankara ve ters yönü, Bursa ile Eskişehir ve aynı şehir seçimi kontrol edilmiştir. Aynı şehir için sıfır sonuç doğru şekilde korunmuştur. Özel kopyanın kaydedilip yeniden açılmasından sonra B1 arama formülü aynı kalmıştır. İndirilecek özgün dosyanın byte hash değeri testlerden önceki değerle eşleşmiştir. Bu kontroller saklı tablonun kullanıldığını doğrular; güncel coğrafi doğruluğu kanıtlamaz.
Kullanım ve Sonucun Yorumlanması
Önce çalışma kitabının yedek bir kopyası saklanır. Dosya uygun Excel ortamında açılır ve kaynağın güvenilirliği değerlendirildikten sonra gerekli makro çalıştırma tercihi yapılır. Formda iki dolu şehir seçilir. Sonuç etiketindeki değer, çalışma kitabındaki tarihsel matrisin ilgili hücresidir. Yeni bir rota, trafik durumu, yol çalışması veya ulaşım süresi hesaplanmaz.Makro arayüzü kullanılmadan A1 ve A2 hücrelerinin matrisle eşleşen metinlerle doldurulması da B1 formülünü besler. Bununla birlikte form etiketi, kendi değişim olayları çalışmadığında ayrı bir güncelleme davranışı gerektirebilir. Çalışma sayfasındaki sonuçla formdaki etiketin farklı anlarda okunması yerine seçim sonrasında ikisinin tutarlılığı kontrol edilmelidir. Testlerde normal kontrol değişimleri üzerinden aynı değer görülmüştür.
Galeri iki gerçek görüntü içerir: tek görünür sayfanın okunabilir temsilî matris alanı ve Excel içinde açılmış gerçek kullanıcı formu. Bütün geniş matris tek bir küçük görsele sıkıştırılmamıştır. İndirilebilir XLS dosyası bütün saklı değerleri, adı, formu ve VBA yordamlarını içerir. Kapaktaki çizim konu anlatımıdır; galeri görüntüleri ise doğrudan kaynak dosyanın yerel Excel görünümünden hazırlanmıştır.
Dosya, iki yönlü arama formülü ile VBA kontrol olaylarının birlikte nasıl çalıştığını incelemek isteyenler için uygundur. Matris üretimi, canlı veri yenileme veya navigasyon çözümü arayan bir kullanım için farklı bir araç gerekir. Kaynak değerlerle çalışma yapılırken tarihsel kapsam ve şehir etiketi uyumu dikkate alınmalıdır. Sonuçların başka bir güncel veri kaynağıyla doğrulanması gerekiyorsa bu karşılaştırma çalışma kitabından ayrı yürütülmelidir.
Kaynak Değer ve Formül Ayrımını Koruma
Matrisin sayısal hücreleri saklı veridir; B1 ise bu veriyi seçen formüldür. Bir mesafe hücresinin elle değiştirilmesi sonraki sorgu sonucunu etkileyebilir, ancak formül başka bir doğrulama kaynağından düzeltme yapmaz. Bu yüzden ham değerleri değiştirmekle şehir seçimini değiştirmek aynı işlem değildir. İnceleme kopyasında sorgu hücreleri kullanılırken ana matris değerlerinin korunması hesaplamanın tekrarlanabilirliği açısından önemlidir.Şehir listesinde boş alanların bulunması, arama hatalarının boş görünmesi ve eski kaydedilmiş yordamların aktif hücreye bağımlı olması kaynak tasarımının açık sınırlarıdır. Bu sınırlar gizlenmemiş, dosyadan özellik silinerek sadeleştirme yapılmamıştır. Tek özgün sürüm olduğu gibi korunur. Yerel testler yalnız güvenli seçim akışı, saklı hücre eşleşmesi ve yeniden açılıştaki formül korunumu için kanıt sağlar. Gelecekte şehir adları veya matris kapsamı güncellenirse aynı seçim testleri yeni veriler üzerinde ayrıca yapılmalıdır.