Excel'de Metin İçindeki Sayıyı Ayıklama işlevi

Katılım
9 Ekim 2021
Mesajlar
5
Excel Vers. ve Dili
son sürüm
türkçe
Bir metin düşünün alta doğru uzanan bir metin
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms
yukarıda örnek bir metin bıraktım bu metindeki sadece Delayın sağ tarafındaki x ms yazan yeri ayıklattırıp.
Örnek:
500 ms
300 ms
100 ms
gibi saf ve temiz bir şekilde bıraktırıp daha sonra bu mslerden de kurtulup kalan sütundaki sayıları toplattırabilecek bir kod satırı beceremedim yardımcı olabilecek birisi var mı

EXCEL VBA VE ACTİVEX ETKİN DURUMDA KOMUT BUTONU İLE YAPTIRMAYA CALISITM FORUMDAKİ BİRKAÇ ADET KONUYU DA İRDELEDİM ANCAK BİR SONUCA ULAŞAMADIM

Rapor
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms

Bu bahsettiğiniz metin tek bir hücrede mi yazıyor?
Yoksa A1:A10 gibi bir aralıkta aşağıdaki gibi alt alta devam eden hücrelerden mi oluşuyor?
A1=KeyDown
A2=Delay 100 ms
A3=KeyDown
A4=Delay 100 ms
 
Katılım
9 Ekim 2021
Mesajlar
5
Excel Vers. ve Dili
son sürüm
türkçe
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms
KeyUp
Delay 100 ms
KeyDown
Delay 100 ms

Bu bahsettiğiniz metin tek bir hücrede mi yazıyor?
Yoksa A1:A10 gibi bir aralıkta aşağıdaki gibi alt alta devam eden hücrelerden mi oluşuyor?
A1=KeyDown
A2=Delay 100 ms
A3=KeyDown
A4=Delay 100 ms
alt alta devam ediyor 1. satırda keydown
2. satırda delay 100ms
3. satırda keyup
gibi komple yapıştırmadan önce a stünunu seçiyorum onun içerisine alt alta otomatik yerleştiriyor
 
Son düzenleme:

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
A sütununda bu şekilde Textleriniz varsa
B1 hücresine aşağıdaki formülü yapıştırabilir ve aşağı doğru çoğaltabilir, başka bir hücrede de B sütununu toplayabilirsiniz

=TOPLA.ÇARPIM(PARÇAAL(0&A1; BÜYÜK(İNDİS(ESAYIYSA(--PARÇAAL(A1; SATIR(DOLAYLI("1:"&UZUNLUK(A1))); 1)) * SATIR(DOLAYLI("1:"&UZUNLUK(A1))); 0); SATIR(DOLAYLI("1:"&UZUNLUK(A1))))+1; 1) * 10^SATIR(DOLAYLI("1:"&UZUNLUK(A1)))/10)


Ya da
Eğer A sütununa yapıştırdığınız text her daim KeyDown - Delay - ms ifadelerinden başka bir ifade içermiyorsa formülünüz daha da sadeleşir.
Aşağıdaki formül A1:A10 aralığı içindir
=TOPLA(EĞERHATA(1*(YERİNEKOY(YERİNEKOY(YERİNEKOY(A1:A10;"KeyDown";"");"Delay";"");"ms";""));0))
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Sayıları ayıklamak için aşağıdaki kodu kullanabilirsiniz.

Kod:
Function sayial(hcr As String)
Dim mu As Integer
mu = Len(hcr)
For i = 1 To mu
If IsNumeric(Mid(hcr, i, 1)) Then sonuc = sonuc & Mid(hcr, i, 1)
Next i
sayial = 1*sonuc
End Function
Verileriniz A sütunuda ise;
B1 hücresine:
=sayial(A1) yazıp, yeterince aşağıya doğru kopyalayın.

0
100
0
100
0
100
0
100
0
100

Bu şekilde bir sonuç elde edeceksiniz. Bunları isterseniz SUM=TOPLA ile toplayabilirsiniz. İsterseniz bunu da küçükten büyüğe sıralamaya tabi tutarsanız; sonuç:

0
0
0
0
0
100
100
100
100
100

şeklinde olur.

0'lı satırları seçip, silebilirsiniz. Kalanları toplayabilirsiniz.

Ayrıca değişik örnekleri içeren bir dosya hazırladım.


.

.
 

Ekli dosyalar

Son düzenleme:
Katılım
9 Ekim 2021
Mesajlar
5
Excel Vers. ve Dili
son sürüm
türkçe
A sütununda bu şekilde Textleriniz varsa
B1 hücresine aşağıdaki formülü yapıştırabilir ve aşağı doğru çoğaltabilir, başka bir hücrede de B sütununu toplayabilirsiniz

=TOPLA.ÇARPIM(PARÇAAL(0&A1; BÜYÜK(İNDİS(ESAYIYSA(--PARÇAAL(A1; SATIR(DOLAYLI("1:"&UZUNLUK(A1))); 1)) * SATIR(DOLAYLI("1:"&UZUNLUK(A1))); 0); SATIR(DOLAYLI("1:"&UZUNLUK(A1))))+1; 1) * 10^SATIR(DOLAYLI("1:"&UZUNLUK(A1)))/10)


Ya da
Eğer A sütununa yapıştırdığınız text her daim KeyDown - Delay - ms ifadelerinden başka bir ifade içermiyorsa formülünüz daha da sadeleşir.
Aşağıdaki formül A1:A10 aralığı içindir
=TOPLA(EĞERHATA(1*(YERİNEKOY(YERİNEKOY(YERİNEKOY(A1:A10;"KeyDown";"");"Delay";"");"ms";""));0))
Private Sub CommandButton1_Click()
Range("B:D").ClearContents

For i = 2 To 434
uzunluk = Len(Cells(i, 1))
For y = 1 To uzunluk
kontrol1 = Mid(Cells(i, 1), y, 1)
kontrol2 = Mid(Cells(i, 1), y, 1)

If IsNumeric(kontrol1) Or IsNumeric(kontrol2) Then
If Cells(i, 2) = "" Then
Cells(i, 2) = y
End If
Cells(i, 3) = y
End If

Next y
Cells(i, 4) = Mid(Cells(i, 1), Cells(i, 2), Cells(i, 3) - Cells(i, 2) + 1)
Next i
Range("B:C").Delete





End Sub
elimde şu tarzda bir komut var bu işimin yarısın hallediyor
BU KOD İLE B STUNUNA İSTEDİĞM DEĞERLERİ YAZDIRABİLİYORUM ANCAK MSLER İLE BİRLİKTE DİĞER KEYDOWN KEYUP GİBİ DEĞERLERİN OLDUĞU SATIRDAKİ SAYILAR DA GELİYOR BUNLARIN OLMASINI İSTEMİYORUM BU KOD İLE BİLRİKTE NASIL AYIKLATTIRABİLİRİM ACABA
 
Katılım
9 Ekim 2021
Mesajlar
5
Excel Vers. ve Dili
son sürüm
türkçe


şu şekilde de bir görsel ekliyeyim butona tıkladığımda bu hali alıyor tablom ancak burdaki keydownların keyupların vs olmasıın istemiyorum sadece delay ve msnin olduğu satırlardaki sayıların olmasını istiyorum @İdris SERDAR @ÖmerFaruk yardımcı olabilirmisiniz rica etsem üstadlarım
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Dediklerinizi yok etmek için aşağıdaki gibi bir kod kullanabilirsiniz.

Kod:
Sub satsil()

Dim aln As Range
Set aln = Range("A1").CurrentRegion

With aln
.AutoFilter Field:=1, Criteria1:="=*Key*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.AutoFilterMode = False

End Sub
.
 
Katılım
9 Ekim 2021
Mesajlar
5
Excel Vers. ve Dili
son sürüm
türkçe
.

Dediklerinizi yok etmek için aşağıdaki gibi bir kod kullanabilirsiniz.

Kod:
Sub satsil()

Dim aln As Range
Set aln = Range("A1").CurrentRegion

With aln
.AutoFilter Field:=1, Criteria1:="=*Key*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.AutoFilterMode = False

End Sub
.
Teşşekürler işe yaradı
 
Üst