Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
11
Cevap
12890
Tıklama
0
Öne Çıkarma
excelde koşula göre sütundaki numaraları ayırma
A
11 yıl
Yarbay
Konu Sahibi

Arkadaşlar excelde bir hücrede telefon numaraları var.ev ve cep telefonları yazılı bu hücrelerde.kişiye ait o hücrede tek cep numarası veya ev numarası yer alabiliyor.ayrıca - işareti ile ev ve cep numarası birleştirilip tek hücrede yazılmış.yani benim bu numaraları 2 farklı sütun yapıp ayırmam lazım.biri cep numarası diğeri ev numarası sütunu olacak.5 ile başlayanları cep numarası sütununa 3 ile başlayanları ise ev numarası sütununa atmam lazım.aynı hücrede 2 numarada varsada bu işlem yapılacak.bunu nasıl yapabilirim...



Ö
11 yıl
Yarbay

Eğer bir sütunda 2 numara var ve numaralar birbirinden "-" ile ayrılıyorsa "Metni Sütunlara Dönüştür" ile yapabilirsin.

Eğer - ile ayrılmıyorsa formül kullanmak gerekiyor ama bunun için de hücre içini görmem gerek telefon numaraları nasıl yazılmış diye.


Bu mesaja 1 cevap geldi.
A
11 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Öner

Eğer bir sütunda 2 numara var ve numaralar birbirinden "-" ile ayrılıyorsa "Metni Sütunlara Dönüştür" ile yapabilirsin.

Eğer - ile ayrılmıyorsa formül kullanmak gerekiyor ama bunun için de hücre içini görmem gerek telefon numaraları nasıl yazılmış diye.


hücrelerin bazılarında çift numara var 536......-344...... gibi.bazılarında ise sadece tek numara var 3 veya 5 ile başlayan.ben her 3 duruma göre bir çözüm arıyorum.bitişikse ayırıp 5'le başlayanı cep numarası sütununa 3' le başlayanı ev telefonu sütununa yazacak eğer tek numara varsa yine aynı işlemi ayırma olmadan yapacak...


Bu mesaja 2 cevap geldi.
Ö
11 yıl
Yarbay

öncelikle hücrede 1 ya da 2 numara olup olmadığını sorgulatmak için =uzunluk() formülünü kullanabilirsin.
=eğer(uzunluk(a1)>7;soldan(7);a1)
formülü ile Eğer A1 hücresindeki değer uzunluk 7 den büyük ise (bir numara 7 rakamdan oluşuyor, büyükse demek ki 2 numara var) soldan 7 karakter al.
Eğer 7 rakamdan küçükse o zaman A1 deki tüm içeriği al

şeklinde bir formül ile işe başlanabilir.

listeyi tam göremediğim için tam bir çözüm veremiyorum.


Bu mesaja 1 cevap geldi.
A
11 yıl
Binbaşı

şöyle basit bir makro yazdım ancak geliştirilebilir

Function telefon(metin, ilknumara) As String 
Dim telefonlar() As String
ilknumara = Trim(ilknumara)
telefonlar = Split(metin, "-")
If Left(telefonlar(0), 1) = ilknumara Then
telefon = telefonlar(0)
Exit Function
End If
If UBound(telefonlar) = 1 Then
If Left(telefonlar(1), 1) = ilknumara Then
telefon = telefonlar(1)
Exit Function
End If
End If
telefon = ""
End Function

makroyu yapıştırmak için
ALT+F11 e basın
menüden inserrt / module tıklayın
açılan pencereye yapıştırın

a1 hücresinde telefon numaraları varsa b1 de cep tlf için
=telefon(A1;5)
yazın
c1 e ev tlf için
=telefon(A1;3)
yazın





< Bu mesaj bu kişi tarafından değiştirildi akcan -- 19 Şubat 2014; 15:11:18 >
Bu mesaja 1 cevap geldi.
A
11 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Öner

öncelikle hücrede 1 ya da 2 numara olup olmadığını sorgulatmak için =uzunluk() formülünü kullanabilirsin.
=eğer(uzunluk(a1)>7;soldan(7);a1)
formülü ile Eğer A1 hücresindeki değer uzunluk 7 den büyük ise (bir numara 7 rakamdan oluşuyor, büyükse demek ki 2 numara var) soldan 7 karakter al.
Eğer 7 rakamdan küçükse o zaman A1 deki tüm içeriği al

şeklinde bir formül ile işe başlanabilir.

listeyi tam göremediğim için tam bir çözüm veremiyorum.

Hocam hücrelerde kişi adı ve ona ait telefon numarası veya numaraları var.mesela a kişisinin 536..... gibi sadece 1 cep numarası var.b kişisinin ise 344.... gibi bir ev numarası var.c kişisinin ise tek hücrede
535.....-344..... gibi 2 numarasıda var.yani 3 durumda mevcut hücrelerde.ben cep ve ev numarası sütunlarına bu sütundan aldığım değerleri atayacağım.5 ile bşlayanlar cep 3 ile başlayanlar ev numarası olacak.sizin yöntem başlangıç için düşünülebilir ama orda 5 ve 3 rakamlarıyla bir EĞER ifadesi yazmalıyım sanırım.excel bilgim olmadığı için yapamıyorum...



A
11 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: akcan

şöyle basit bir makro yazdım ancak geliştirilebilir

Function telefon(metin, ilknumara) As String 
Dim telefonlar() As String
ilknumara = Trim(ilknumara)
telefonlar = Split(metin, "-")
If Left(telefonlar(0), 1) = ilknumara Then
telefon = telefonlar(0)
Exit Function
End If
If UBound(telefonlar) = 1 Then
If Left(telefonlar(1), 1) = ilknumara Then
telefon = telefonlar(1)
Exit Function
End If
End If
telefon = ""
End Function

makroyu yapıştırmak için
ALT+F11 e basın
menüden inserrt / module tıklayın
açılan pencereye yapıştırın

a1 hücresinde telefon numaraları varsa b1 de cep tlf için
=telefon(A1;5)
yazın
c1 e ev tlf için
=telefon(A1;3)
yazın

hocam öncelikle teşekkürler.sizin makronuz işimi görüyor rica etsem bana kodu açıklayabilirmisiniz.ben öğrenmek istiyorum mantığını.saygılar...


Bu mesaja 1 cevap geldi.
A
11 yıl
Binbaşı

visual basic hiç bilmiyorsanız. anlaşılmadığı için kodları açıklamam hiç işinize yaramayacaktır.
ama yinede açıklamaya çalışayım

Function telefon(metin, ilknumara) As String 
' Function komutu ile telefon adında bir excel formülü icat ediyoruz.
' formülün 2 parametresi var bunlar excelde hücrede parantez içinde girdiklerimiz oluyor
' ilki metin adında yani telefon numaralarını alan parametre
' 2.si ilk numarayı belirlemek için ilknumara

Dim telefonlar() As String
'bellekte(RAM) telefonlar adında dizi değişkeni oluşturuluyor

ilknumara = Trim(ilknumara)
'ilknumara parametresine girdiğimiz rakam önünde bir boşluk ile geliyor yani " 5" şeklinde
'TRIM komutu öndeki ve sondaki boşlukları siler LTRIM de yeterdi aslında

telefonlar = Split(metin, "-")
'metin ile gelen veriyi "-" karakterinden ayırarak telefonlar dizi değişklenine aktarır
'telefonlar(0) "-"nin solunu, telefonlar(1) sağını
' dizi değişkenleri belirtilmezse 0'dan başlar

If Left(telefonlar(0), 1) = ilknumara Then
'IF ile burada mantıksal sınama yapılır. exceldeki EĞER gibi
' eğer telefonlar(0) daki telefon verisinin ilk rakamı 2. parametre ile gelen rakam ile eşitse aşağıdaki 2 satırı yap
telefon = telefonlar(0)
'telefon değişkenine telefonlar(0)'ın değerini aktar. telefon değişkeni fonksiyon adı olduğu için bu excele formül sonucu olarak döner
Exit Function 'fonsiyondan çık. bundan sonrası işlemez (eğer şartı uyarsa tabii)
End If

If UBound(telefonlar) = 1 Then 'eğer telefonlar dizisinin toplam dizi sayısı 1 ise yani 2 tane dizi oluşturduysa. rakamlarda - varsa 2 tane oluşur zaten
If Left(telefonlar(1), 1) = ilknumara Then ' eğer telefonlar(1)'in ilk rakamı ilknumraya eşitse alttaki 2 satırı işlet
telefon = telefonlar(1) 'telefon değişkenine telefonlar(0)'ın değerini aktar. telefon değişkeni fonksiyon adı olduğu için bu excele formül sonucu olarak döner
Exit Function
End If
End If
telefon = ""
'yukardaki IF yani eğer şartlarından hiç biri uymadıysa formül dönüşü olarak boş yani hiçbirşey olarak excele gönder
End Function


inşallah anlatabilmişimdir :)


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ax
A
11 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: akcan

visual basic hiç bilmiyorsanız. anlaşılmadığı için kodları açıklamam hiç işinize yaramayacaktır.
ama yinede açıklamaya çalışayım

Function telefon(metin, ilknumara) As String 
' Function komutu ile telefon adında bir excel formülü icat ediyoruz.
' formülün 2 parametresi var bunlar excelde hücrede parantez içinde girdiklerimiz oluyor
' ilki metin adında yani telefon numaralarını alan parametre
' 2.si ilk numarayı belirlemek için ilknumara

Dim telefonlar() As String
'bellekte(RAM) telefonlar adında dizi değişkeni oluşturuluyor

ilknumara = Trim(ilknumara)
'ilknumara parametresine girdiğimiz rakam önünde bir boşluk ile geliyor yani " 5" şeklinde
'TRIM komutu öndeki ve sondaki boşlukları siler LTRIM de yeterdi aslında

telefonlar = Split(metin, "-")
'metin ile gelen veriyi "-" karakterinden ayırarak telefonlar dizi değişklenine aktarır
'telefonlar(0) "-"nin solunu, telefonlar(1) sağını
' dizi değişkenleri belirtilmezse 0'dan başlar

If Left(telefonlar(0), 1) = ilknumara Then
'IF ile burada mantıksal sınama yapılır. exceldeki EĞER gibi
' eğer telefonlar(0) daki telefon verisinin ilk rakamı 2. parametre ile gelen rakam ile eşitse aşağıdaki 2 satırı yap
telefon = telefonlar(0)
'telefon değişkenine telefonlar(0)'ın değerini aktar. telefon değişkeni fonksiyon adı olduğu için bu excele formül sonucu olarak döner
Exit Function 'fonsiyondan çık. bundan sonrası işlemez (eğer şartı uyarsa tabii)
End If

If UBound(telefonlar) = 1 Then 'eğer telefonlar dizisinin toplam dizi sayısı 1 ise yani 2 tane dizi oluşturduysa. rakamlarda - varsa 2 tane oluşur zaten
If Left(telefonlar(1), 1) = ilknumara Then ' eğer telefonlar(1)'in ilk rakamı ilknumraya eşitse alttaki 2 satırı işlet
telefon = telefonlar(1) 'telefon değişkenine telefonlar(0)'ın değerini aktar. telefon değişkeni fonksiyon adı olduğu için bu excele formül sonucu olarak döner
Exit Function
End If
End If
telefon = ""
'yukardaki IF yani eğer şartlarından hiç biri uymadıysa formül dönüşü olarak boş yani hiçbirşey olarak excele gönder
End Function


inşallah anlatabilmişimdir :)

hocam yazılım bilgim var ama vb ile ilgili değildim.açıkladığın için teşekkür ederim...



U
10 yıl
Er

A sutunundaki sayilardan tek olanlari b cift olanlari buyukten kucuge siralauacak maktoya ihtiyacim var tesekkurler



< Bu ileti mobil sürüm kullanılarak atıldı >

U
10 yıl
Er

A sutunundaki sayilardan tek olanlari b cift olanlari c ye buyukten kucuge siralauacak maktoya ihtiyacim var tesekkurler



< Bu ileti mobil sürüm kullanılarak atıldı >

E
8 yıl
Er

arkadaşlar,
excelim iki sheetten oluşuyor. 1.sheet deki A12 hücresi ve 2.sheet deki B4 ve 1.sheet deki I10 ve 2.sheet deki N2 hücreleri eşitse;
1.sheet deki I12(hücres içindeki sayının üstüne) + 2.sheet deki N4 (bu hücredeki değeri ) eklesin istiyorum. eğer eşit değilse de 1.sheet deki I12 yazılı kalsın, bi değişiklik olmasın. bu sadece bir döngü. bu diğer hücreler içinde devam etsin istiyorum. bunu nasıl yapabilirim? yardımcı olursanız çok sevinirim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.