• DİKKAT

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

Sağdaki harfleri sayıya rastlayana kadar parça al

SATIR(DOLAYLI("1:"&UZUNLUK(A2)) formülün bu kısmını anlayamadım. Açıklama getirebilir misiniz?
 
Teşekkürler.
ikinci sayfasındaki şu örnek olayı en somut haliyle özetlemiş. Daha somut anlatılmazdı sanırım. @İdris SERDAR 'a da emeği için teşekkürler.

216100
 
Sorgulanan hücredeki karakter sayısına göre işlem yapmak için kullanılmış. Yani hücrenin uzunluğu 10 karakter ise ilgili bölüm 10 satırı işlem yaparak parçalama işlemi yapıyor.
 
Sorgulanan hücredeki karakter sayısına göre işlem yapmak için kullanılmış. Yani hücrenin uzunluğu 10 karakter ise ilgili bölüm 10 satırı işlem yaparak parçalama işlemi yapıyor.

Kod:
=SAĞDAN(A2;KAÇINCI(1;İNDİS(--ESAYIYSA(--PARÇAAL(A2;UZUNLUK(A2)+1-SATIR(DOLAYLI("1:"&UZUNLUK(A2)));1));0);0)-1)

Test isimli excel örneğine bakarak ilk hücre için düşünürsek (yani A2)

Kod:
DOLAYLI("1:"&UZUNLUK(A2))

demek şu anlama mı geliyor

Kod:
UZUNLUK(A2)
sonucu 10 karakter olacağı için
Kod:
DOLAYLI(1:10)
ile aynı işlem mi?

Bende bu kısmı çözmeye - anlamaya çalışıyorm.
 
Bu yazım şekli daha profesyonel olarak kullanım şeklidir. Yani direkt olarak hücrenin karakter uzunluğunu dikkate alır.

Ben mesela SATIR(A1:A255) kullandım. Burada sonuç olarak 255 karakter sorguya giriyor. Yani hücrenin uzunluğu 10 karakter ise gereksiz yere 245 karaktere daha bakılıyor. Ama sonuç olarak doğru sonucu verdiğinden bir sıkıntı çıkarmıyor. Birde iki yazım tekniği arasında birazda olsa uzunluk farkı var.

SATIR(DOLAYLI("1:"&UZUNLUK(A2))) (Profesyonel kullanım)
SATIR(A1:A255) (Pratik kullanım)

Kurgu yaparken eğer sorun çıkarmayacaksa formüllerde bu şekilde tabiri caizse kaçamak (pratik) yöntemler kullanılabilir.

Tabi ki tercih meselesidir.
 
Bu yazım şekli daha profesyonel olarak kullanım şeklidir. Yani direkt olarak hücrenin karakter uzunluğunu dikkate alır.

Ben mesela SATIR(A1:A255) kullandım. Burada sonuç olarak 255 karakter sorguya giriyor. Yani hücrenin uzunluğu 10 karakter ise gereksiz yere 245 karaktere daha bakılıyor. Ama sonuç olarak doğru sonucu verdiğinden bir sıkıntı çıkarmıyor. Birde iki yazım tekniği arasında birazda olsa uzunluk farkı var.

SATIR(DOLAYLI("1:"&UZUNLUK(A2))) (Profesyonel kullanım)
SATIR(A1:A255) (Pratik kullanım)

Kurgu yaparken eğer sorun çıkarmayacaksa formüllerde bu şekilde tabiri caizse kaçamak (pratik) yöntemler kullanılabilir.

Tabi ki tercih meselesidir.
Teşekkürler.
Geceden beri bu formülü anlamaya/çözmeye çalışıyorum ki bende başka yerlerde bunları kullanabileyim. Ancak aralardaki eksi(-) ve artılar işi anlamada desteğe ihtiyaç duyduruyor. Burda bir açıklayan olmazsa da ilerlenemiyor.

Kod:
-SATIR(DOLAYLI("1:"&UZUNLUK(A2)))

dolaylı kısmını anladık. SATIR ın başındaki eksi (-) burada şuradaki işlemi mi yapıyor yoksa çıkartma işlemi mi yapıyor.


Kod:
PARÇAAL(A2;UZUNLUK(A2)+1-SATIR(DOLAYLI("1:"&UZUNLUK(A2)));1)

Buradaki kodda UZUNLUK(A2) değerinin 1 ile toplayıp sonra dolaylı-satır dan gelen sıfır değerinden çıkartıyor muyuz?
 
Hayır işlem verdiğiniz linkteki işlemle aynı değil. Sadece uzunlukları birbirinden çıkarmak için kullanılmış. Yani normal çıkarma işlemidir.
 
SATIR(DOLAYLI("1:"&UZUNLUK(A2))) ile
SATIR(A1:A10) nasıl aynı anlama geliyor ki? SATIR(DOLAYLI(1;10)) formülünün sonucu SATIR(A1:A10) mu?
 
İkisini de formül içinde değerlendirdiğinizde aşağıdaki dizi oluşur. Bu sebeple aynı diyoruz.

{1;2;3;4;5;6;7;8;9;10}
 
13 No'lu mesaja eklediğim dosyada kullanılan formülün işlem basamaklarını ekli dosyada belirtmeye çalıştım, merak edenler için faydası olabilir....

.
 

Ekli dosyalar

Excel'de "A" satırı diye birşey olmaz, "A" sütunu olur....

Formüldeki "Dolaylı - Indirect" fonksiyonunun karşılığı, daha doğrusu ne işe yaradığı bir üst satırdaki formülde belli zaten.


Kod:
ROW(INDIRECT("1:1")) = 1



ROW(INDIRECT("4:4")) = 4

.
 
@mehmetuca,

Formülün "A" sütununu işaret etmesi önemli değil. Önemli olan bahsettiğim diziyi oluşturabilmesidir.

Yani vba bölümünde hücreyi ifade ederken kullanılan ifadeler gibi... Aşağıdakilerin hepsi A1 hücresini ifade eder.

Cells(1, 1)
Cells(1, "A")
Range("A1")
[A1]
R1C1
 
13 No'lu mesaja eklediğim dosyada kullanılan formülün işlem basamaklarını ekli dosyada belirtmeye çalıştım, merak edenler için faydası olabilir....

.
Kod:
PARÇAAL(A2;UZUNLUK(A2)+1-SATIR(DOLAYLI("1:"&UZUNLUK(A2)));1)

Teşekkür ederim basamaklar anlaşılır olmuş.
1. Basamakta emin olmak için bir şeyi daha danışayım.
Kod:
SATIR(DOLAYLI("1:"&UZUNLUK(A2)))
Bu kısım örnekteki 1. basamakta karakter sayısı kadar döngü oluşturuyor sanırım değil mi?
Kodlamalarda for - next ya da while döngüsü gibi bir döngü oluşturuyor...
Böylece hücre içeriği toplam kaç karakterse o kadar satır oluşturuyor ve o satır sayısı kadar bu işlem tekrar ediyor.

A2 hücresi için söylemek gerekirse
0054834BOW değeri için


1. satırda
=PARÇAAL(A2;UZUNLUK(A2)+1-1;1)

2. satırda
=PARÇAAL(A2;UZUNLUK(A2)+1-2;1)
...
...
...
...
...
...
10. satırda
=PARÇAAL(A2;UZUNLUK(A2)+1-10;1)


doğrumu anlıyorum ?
 
Son düzenleme:
Evet, döngü işini diziyle hallediyoruz... Zaten sütunlarda bu şekilde belirtmiştim.

.
 
Evet, döngü işini diziyle hallediyoruz...

.
Teşekkürler

Peki excelde bu dizileri ya da dizinin elemanlarını php vb. programlama dillerinde olduğu gibi
print_r(array());
vb. gibi sayfaya dökme ya da görünür hale getirebiliyor muyuz?
işlemin çıktısını görüp ona göre devam edebilmek adına...
 
O zaman VBA kullanmak gerekir ....

.
 
Formülün step-step (adım-adım) çalışmasını izlemek için sayfada C2 hücresini seçip; aşağıdaki resimi inceleyip uygulayabilirsiniz....


Capture.PNG



.
 
uzatıyorum ancak anlamaya çalışıyorum.

Kod:
=PARÇAAL(A2;UZUNLUK(A2)+1-{0,0,5,4,8,3,4,B,O,W};1)
şu şekilde denemeye çalıştım hata verdi.
Dizileri formülün içinde nasıl deneyebilirim?
 
Geri
Üst