B1:B9 Aralığına A2:A21 arasındaki verilerin 5 ile 15 arasındaki sadece sayı olan kıs

N.Ziya Hiçdurmaz

Özel Üye
Katılım
28 Nisan 2007
Mesajlar
2,215
Excel Vers. ve Dili
Office 2013 TR / 32 Bit
Günün sorusu .B1:B9 Aralığına A2:A21 arasındaki verilerin 5 ile 15 arasındaki sadece sayı olan kısımları alınacak.
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,558
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Günün sorusu olarakmı sordunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,558
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıda makrolu çözüme ait kodları ve açıklamaları bulabilirsiniz. Kodda kullanılan "Val" terimi sayısal değerlerin ayrımında kullanılarak kodun daha hızlı çalışması sağlanmıştır.

Kod:
Sub SAYI_AYIR()
    [B:B].Clear
    SATIR = 1
    For X = 2 To [A65536].End(3).Row
    If Val(Cells(X, 1)) >= 5 And Val(Cells(X, 1)) <= 15 Then
    Cells(SATIR, 2) = Val(Cells(X, 1))
    SATIR = SATIR + 1
    End If
    Next
    MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
End Sub

'AÇIKLAMALAR
'1.SATIR - MAKROMUZA İSİM TANIMLIYORUZ.
'2.SATIR - B SÜTUNUNDAKİ DEĞERLERİ TEMİZLİYORUZ.
'3.SATIR - SATIR İSİMLİ DEĞİŞKENİMİZE 1 DEĞERİNİ VERİYORUZ.
'4.SATIR - X İSİMLİ FOR-NEXT DÖNGÜSÜ BAŞLATIYORUZ.
'5.SATIR - A SÜTUNUNDAKİ X DEĞERİNİN ALDIĞI İLK HÜCRENİN SAYISAL DEĞERİNİN 5 İLE 15 ARASINDA OLUP OLMADIĞINI SORGULUYORUZ.
'6.SATIR - EĞER ŞARTIMIZ GERÇEKLEŞİYORSA B SÜTUNUNA BU HÜCREDEKİ SAYISAL DEĞERİ AKTARIYORUZ.
'7.SATIR - SATIR İSİMLİ DEĞİŞKENİN DEĞERİNE 1 EKLİYORUZ.
'8.SATIR - ŞARTIMIZI SONLANDIRIYORUZ.
'9.SATIR - DÖNGÜMÜZE DEVAM EDİYORUZ.
'10.SATIR - KULLANICIYA İŞLEMİN BİTTİĞİNE DAİR BİLGİLENDİRME MESAJI VERİYORUZ.
'11.SATIR - MAKROMUZU SONLANDIRIYORUZ.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

A s&#252;tununa kar&#305;&#351;&#305;k girilmi&#351; say&#305; ve metinleri ay&#305;r&#305;r


Kod:
Sub AYIR2()
'Kar&#305;&#351;&#305;k girilmi&#351; say&#305; ve metinleri ay&#305;r&#305;r
Dim I As Integer
Dim Kar As String
'x de&#287;i&#351;kenine A s&#252;tunundaki verilerin adetini at&#305;yoruz.
x = WorksheetFunction.CountA(Range("A:a"))
'a s&#252;tunundaki veri aral&#305;&#287;&#305; kadar d&#246;ng&#252; ba&#351;lat&#305;yoruz
For Each HUCRE In Range("A1:a" & x)
AYR = ""
'verinin bulundu&#287;u h&#252;crenin adresini al
ADRES = HUCRE.Address
'Metinin her karekterini tek tek s&#305;na
For I = 1 To Len(HUCRE)
'aktih h&#252;credeki veriden I de&#287;erinden ba&#351;layarak 1 karakter al
Kar = Mid(HUCRE, I, 1)
'Her bir karekterin say&#305; oldu&#287;unu s&#305;na
If IsNumeric(Kar) = True Then
' Say&#305;lar&#305; birle&#351;tir
AYR = AYR & Kar
End If
Next
'verinin oldu&#287;u h&#252;crenin yan&#305;ndaki h&#252;creye bulunan say&#305;lar&#305; yaz
Range(ADRES).Offset(0, 1) = AYR
Next
End Sub
D&#252;zenleme: Soruda g&#246;z&#252;mden ka&#231;an 5 ile 15 aras&#305;nda kalan say&#305;lar cevab&#305;mda yoktur.Cevab&#305;m t&#252;m say&#305;lar i&#231;in ge&#231;erlidir.
 
Son düzenleme:

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

verilerin 5 ile 15 aras&#305;ndaki sadece say&#305; olan k&#305;s&#305;mlar&#305; al&#305;nacak

Kod:
Sub AYIR5()
'Kar&#305;&#351;&#305;k girilmi&#351; say&#305; ve metinleri ay&#305;r&#305;r
Dim I As Integer
Dim ayr As Integer
Dim Kar As String
'x de&#287;i&#351;kenine A s&#252;tunundaki verilerin adetini at&#305;yoruz.
x = WorksheetFunction.CountA(Range("A:a"))
'a s&#252;tunundaki veri aral&#305;&#287;&#305; kadar d&#246;ng&#252; ba&#351;lat&#305;yoruz
For Each HUCRE In Range("A1:a" & x)
ayr = 0
'verinin bulundu&#287;u h&#252;crenin adresini al
ADRES = HUCRE.Address
'Metinin her karekterini tek tek s&#305;na
For I = 1 To Len(HUCRE)
'aktih h&#252;credeki veriden I de&#287;erinden ba&#351;layarak 1 karakter al
Kar = Mid(HUCRE, I, 1)
'Her bir karekterin say&#305; oldu&#287;unu s&#305;na
If IsNumeric(Kar) = True Then
' Say&#305;lar&#305; birle&#351;tir
ayr = ayr & Kar
End If
Next
 If ayr >= 5 And ayr <= 15 Then
'verinin oldu&#287;u h&#252;crenin yan&#305;ndaki h&#252;creye bulunan say&#305;lar&#305; yaz
Range(ADRES).Offset(0, 1) = ayr
End If
Next
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bende aşağıdaki kodu öneriyorum.

Kod:
Sub aktar()
[a2:a65536].SpecialCells(xlCellTypeConstants, 2).Copy [b1]
[b:b].Replace What:="veri", Replacement:=""
End Sub
 
[COLOR=green]'İlk satır ctrl+g ile git penceresinden özel-metin seçiminin kod olarak karşılığıdır. Metin veriler seçilip B sütununa kopyalanır.[/COLOR]
[COLOR=green][/COLOR] 
[COLOR=green]'B sütununa aktarılan verilerden "veri" kısmı silinir.[/COLOR]
 

N.Ziya Hiçdurmaz

Özel Üye
Katılım
28 Nisan 2007
Mesajlar
2,215
Excel Vers. ve Dili
Office 2013 TR / 32 Bit
Yanıt

Bende böyle birşey düşünmüştüm.
Sub TEST()
[B1:B9].Clear
For bak1 = 1 To [A65000].End(3).Row
If Val(Range("A" & bak1)) >= 5 And Val(Range("A" & bak1)) <= 15 Then
S = S + 1
Range("B" & S) = Val(Range("A" & bak1))
End If
Next
End Sub
'1 b1:a9 aralığını temizliyoruz
'2 A sütün aralığında döngümüzü kuruyoruz
'3 5 ile 15 arasındaki sayıları kelimelerden ayırarak işlem için şart koşuyoruz
'4 S değişkenine +1 atıyoruz
'5 B sütununa koşula uyan değerleri alıyoruz
 
Katılım
4 Ocak 2008
Mesajlar
5
Excel Vers. ve Dili
office2003
neden dosyaları indiremiyorum bana lazım bu formul ama erişemiyorum
 
Üst