Formül meydan okuması - sıra kodları dışında işaretleme - Bulmaca

İçindekiler

Sorun

Alfasayısal kodlardan oluşan bir listemiz var. Her kod tek bir harften (A, B, C, vb.) Ve ardından 3 haneli bir sayıdan oluşur. Bu kodlar alfabetik sırada görünmelidir, ancak bazen sıra dışıdırlar. Sıra dışı kodları işaretlemek istiyoruz.

1. Zorluk

"Kontrol Et" sütunundaki hangi formül, sıra dışı bir kodun yanına bir "x" yerleştirir? Bu meydan okumada, harfin kendisinin sıra dışı olup olmadığını değil, kodun yalnızca * sayısal * kısmının sıra dışı olduğunu kontrol ediyoruz.

Zorluk 2

Yukarıdaki formül, kodun "alfa" kısmının (A, B, C, vb.) Sıra dışı olup olmadığını kontrol edecek şekilde nasıl genişletilebilir? Örneğin, "A" ile başlayan bir kodu, "C" veya "B" ile başlayan bir koddan sonra görünüyorsa işaretlemeliyiz.

Aşağıdaki çalışma sayfasını indirin ve mücadeleye katılın!

Not: Çalışma kitabında 2 sayfa vardır, biri 1. Zorluk, biri 2. Zorluk için.

İpucu - Bu video, bunun gibi bir sorunun nasıl çözüleceğine dair bazı ipuçları gösterir.

Varsayımlar

  1. Tüm kodlar her zaman dört karakter içerir: 1 büyük harf + 3 rakam.
  2. Harf başına kod sayısı rastgeledir, ancak sayısal değerlerde boşluk olmamalıdır.
  3. Sonraki kodların tümünü değil, yalnızca ilk kodu sıralı olmayan bir harfle işaretlemek gerekir.
Cevap (genişletmek için tıklayın)

İşte bazı çalışma çözümleri. Excel'de sık karşılaşılan sorunları çözmenin pek çok yolu olduğunu anlamak önemlidir. Aşağıdaki cevaplar sadece kişisel tercihimdir. Aşağıdaki formüllerin tamamında, daha fazla bilgi istiyorsanız işlev adları tıklanabilir.

1. Zorluk

Başlangıçta şu formülle gittim:

=IF((LEFT(B5)=LEFT(B6))*(MID(B5,2,3)+1MID(B6,2,3)+0),"x","")

Not MID, metin döndürür. 1 ekleyerek ve sıfır ekleyerek, Excel'in metni bir sayıya zorlamasını sağlıyoruz. IF içindeki mantıksal testin içindeki çarpma, başka bir iç içe IF'den kaçınmak için boole mantığını kullanır. Neden SAĞ'ı kullanmadığımdan emin değilim, bu da burada iyi çalışıyor.

Ayrıca LEFT'in karakter sayısını gerektirmediğini ve sağlanmadıysa ilk karakteri döndüreceğini unutmayın.

Aşağıdaki akıllı yanıtlardan bazılarına dayanarak, biraz daha optimize edebiliriz:

=IF((LEFT(B5)=LEFT(B6))*(MID(B6,2,3)-MID(B5,2,3)1),"x","")

Burada, MID'den MID çıkarmanın matematik işlemi, metin değerlerini otomatik olarak sayılara zorlar.

Zorluk 2

Bu çözüm için birkaç iç içe IF kullandım (okunabilirlik için satır sonları eklendi):

=IF(LEFT(B5)=LEFT(B6), IF((MID(B5,2,3)+1MID(B6,2,3)+0),"x",""), IF(CODE(B5)+1CODE(B6),"x",""))

Bunu yaptım çünkü ilk test LEFT (B5) = LEFT (B6) sayıları mı yoksa harfleri mi kontrol ettiğimizi belirler. İlk karakter aynıysa, yukarıdaki gibi sayıları kontrol ediyoruz. Değilse, sadece ilk harfi kontrol ediyoruz.

Bir metin dizesi 1'den fazla karakter içeriyorsa, CODE işlevinin ilk karakterin ascii sayısını döndüreceğini unutmayın. Bu bir hack gibi geliyor ve belki kodu daha az anlaşılır kılıyor ama işe yarıyor :)

Bu, duyarlılıklarınızı rahatsız ediyorsa, yalnızca ilk karakteri ortaya çıkarmak için yukarıdaki KODUN içinde SOL'u kullanın.

Ilginç makaleler...