Aynı hücrede yer alan metin ve sayıların içinden sayıların toplanması ve yanınada Adet metninin eklenmesi

Katılım
4 Mayıs 2020
Mesajlar
7
Excel Vers. ve Dili
12 trükçe
Merhabalar;

Örneğin tek hücrede yer alan : (11 Adet 5 kg) ifadesinin 11+5 :16 Adet sonucunu verecek şekilde toplanması için yardımcı olabilir iseniz sevinirim. Her halükarda sonucun aynına istediğimiz adet vs gibi bir metininde eklenmesi
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
552
Excel Vers. ve Dili
Office365 TR
Veriniz A1 hücresinde ise;
Kod:
=BİRLEŞTİR((SOLDAN(A1;BUL("Adet";A1;1)-1))+(PARÇAAL(A1;BUL("t ";A1;1)+2;BUL(" kg";A1;1)-BUL("t ";A1;1)-2));" EXCEL")
EXCEL yazdığım yere istediğiniz değeri yazabilirsiniz.
Formülü aşağıya doğru kopyalayabilirsiniz.
 
Katılım
4 Mayıs 2020
Mesajlar
7
Excel Vers. ve Dili
12 trükçe
Üstad merhaba,
Burada (11 Adet 5 Kg) tek bir hücrede yer alıyor, ayrı hücreler olmadığı için birleştir olmaz kanaatimce ama, birde buradaki adet ve kg değişebilir sürekli olarak tabloda bu örnek olarak yazdım saedece
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
552
Excel Vers. ve Dili
Office365 TR
Örnek excel paylaşırsanız istemiş olduğunuzu daha rahat anlayıp ona göre çözümler üretilebilir.
dosya.tc sitesine örnek dosyayı yüklerseniz yardımcı oluruz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kullanıcı Tanımlı Fonksiyon;

Hücrede kullanım şekli; =K_TOPLA(Hücre;Birim)

Dilerseniz birim bölümü boş bırakılabilir. Opsiyonel olduğu için formül otomatik olarak Adet ifadesini kendisi ekler.

Örnek; =K_TOPLA(A1;"Adet")

C++:
Option Explicit

Function K_TOPLA(Alan As Range, Optional Birim As String = "Adet") As String
    Dim Veri As Range, Kelime As Variant, X As Integer, Toplam As Double
    
    Application.Volatile
    
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Kelime = Split(Veri.Value)
            For X = 0 To UBound(Kelime)
                If IsNumeric(Kelime(X)) Then
                    Toplam = Toplam + Kelime(X)
                    If K_TOPLA = "" Then
                        K_TOPLA = Kelime(X)
                    Else
                        K_TOPLA = K_TOPLA & "+" & Kelime(X)
                    End If
                End If
            Next
        End If
    Next
    
    K_TOPLA = K_TOPLA & " : " & Toplam & " " & Birim
End Function
 
Katılım
4 Mayıs 2020
Mesajlar
7
Excel Vers. ve Dili
12 trükçe
Kullanıcı Tanımlı Fonksiyon;

Hücrede kullanım şekli; =K_TOPLA(Hücre;Birim)

Dilerseniz birim bölümü boş bırakılabilir. Opsiyonel olduğu için formül otomatik olarak Adet ifadesini kendisi ekler.

Örnek; =K_TOPLA(A1;"Adet")

C++:
Option Explicit

Function K_TOPLA(Alan As Range, Optional Birim As String = "Adet") As String
    Dim Veri As Range, Kelime As Variant, X As Integer, Toplam As Double
   
    Application.Volatile
   
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Kelime = Split(Veri.Value)
            For X = 0 To UBound(Kelime)
                If IsNumeric(Kelime(X)) Then
                    Toplam = Toplam + Kelime(X)
                    If K_TOPLA = "" Then
                        K_TOPLA = Kelime(X)
                    Else
                        K_TOPLA = K_TOPLA & "+" & Kelime(X)
                    End If
                End If
            Next
        End If
    Next
   
    K_TOPLA = K_TOPLA & " : " & Toplam & " " & Birim
End Function
korhan bey gayet güzel oldu ama sadece sonuç yazılsın istiyoruz örneğin sadece 18 adet gibi
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
B1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.Not: İşlemi tam anlayamadım formüldeki * işareti uygun değil ise istediğiniz işlem işareti ile değiştiriniz + / gibi
Kod:
=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))*KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,513
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Merhaba

Yukarda Korhan Ayhan beyin yukardaki 5 numaralı mesajındaki Kullanıcı Tanımlı Fonksiyonu gayet güzel olmuş.

Alternatif olarak ilgili hücre çift tıklandığında aynı hücrenin hemen sağ tarafına
istenilen sonucu yazan makro koduda aşağıdadır.

Selamlar...
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'04.05.2020   15:54

Target.Value = Target.Value & " "

For i = 1 To Len(Target.Value)

    If Mid(Target.Value, i, 1) >= 0 And Mid(Target.Value, i, 1) <= 9 Then 
        say = say & Mid(Target.Value, i, 1)     
    Else 
        If say <> "" Then     
            topla = topla + say * 1
            say = ""         
        End If   
    End If

Next

Target.Value = Mid(Target.Value, 1, Len(Target.Value) - 1)

If topla > 0 Then
 
    Target.Offset(0, 1) = ""
    timer1 = Timer
    Do While Timer - timer1 < 0.3
    Loop
    Target.Offset(0, 1) = topla & "  Adet" 
 
End If

End Sub
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,313
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"adet" ve "kg" metinleri her hücrede sabit olsa, formülle de çözülebilir .... Yoksa, aşağıdaki formülü iyice uzatmak gerekir.

Kod:
=SUMPRODUCT((TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;" adet ";"+"); "kg";"");"+";REPT(" ";255));1+(ROW(A$1:A$999)-1)*255;255)) & "0")/10)

Not: Mesajı yazana kadar 2 cevap daha gelmiş .... ;)

.
 
Katılım
4 Mayıs 2020
Mesajlar
7
Excel Vers. ve Dili
12 trükçe
B1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.Not: İşlemi tam anlayamadım formüldeki * işareti uygun değil ise istediğiniz işlem işareti ile değiştiriniz + / gibi
Kod:
=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))*KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))
=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))*KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))

yerine

=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))+KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))

yapınca oluyor üstad çarpma (*) işaret yerine toplama (+) işareti ile değiştiridim üstad
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))*KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))

yerine

=KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));1;100))+KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));200;100))&" "&KIRP(PARÇAAL(YERİNEKOY($A1;" ";YİNELE(" ";100));300;100))

yapınca oluyor üstad çarpma (*) işaret yerine toplama (+) işareti ile değiştiridim üstad
Dönüş yaptığınız için teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başlığınızda sonuna ADET eklesin diye belirtince ek olarak ilk mesajınızda 11+5: 16 Adet sonucunu versin ifadesini kullanınca ben sonucu METİN biçiminde görmek istediğinizi düşündüm.

Aşağıdaki kullanıcı tanımlı fonksiyonu deneyebilirsiniz.

Sonucu hesaplar sonuna sizin belirlediğiniz birimi ekler.

C++:
Option Explicit

Function K_TOPLA(Alan As Range, Optional Birim As String = "Adet") As String
    Dim Veri As Range, Kelime As Variant, X As Integer, Toplam As Double
    
    Application.Volatile
    
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Kelime = Split(Veri.Value)
            For X = 0 To UBound(Kelime)
                If IsNumeric(Kelime(X)) Then
                    K_TOPLA = K_TOPLA + Kelime(X)
                End If
            Next
        End If
    Next
    
    K_TOPLA = K_TOPLA & " " & Birim
End Function
 
Katılım
4 Mayıs 2020
Mesajlar
7
Excel Vers. ve Dili
12 trükçe
tüm arkadaşlarımızın emeğine sağlık, teşekkür ederiz

Sevgili Peygamberimiz, "İnsanların en hayırlısı, insanlara faydalı olandır"(el-Aclûnî, Keşfu’l-Hafâ, 1/393, H. No: 1254) buyuruyor.

Allah razı olsun
 
Üst