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

Katılım
28 Nisan 2010
Mesajlar
182
Excel Vers. ve Dili
2007 Türkçe
Altın Üyelik Bitiş Tarihi
15/10/2022
SATIR(DOLAYLI("1:"&UZUNLUK(A2)) formülün bu kısmını anlayamadım. Açıklama getirebilir misiniz?
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,767
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,767
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,767
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
28 Nisan 2010
Mesajlar
182
Excel Vers. ve Dili
2007 Türkçe
Altın Üyelik Bitiş Tarihi
15/10/2022
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?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,767
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İ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}
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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

Katılım
28 Nisan 2010
Mesajlar
182
Excel Vers. ve Dili
2007 Türkçe
Altın Üyelik Bitiş Tarihi
15/10/2022
Burada Dolaylı formülü A satırına mı işaret ediyor?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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
.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,767
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@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
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Evet, döngü işini diziyle hallediyoruz... Zaten sütunlarda bu şekilde belirtmiştim.

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
O zaman VBA kullanmak gerekir ....

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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



.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
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?
 
Üst