• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Başka sayfadan veri almak

Katılım
5 Kasım 2007
Mesajlar
4,727
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home

Ekli dosyalar

Son düzenleme:
Merhaba.

Sıra numarası verme ve biçimlendime olmaksızın aşağıdaki kod işinizi görecektir.
Günlük bir işlem olduğu için 17 ve devamı satırlardaki verileri silip yerine yazılması gerektiğini düşündüm.
Ayrıca TOPLAMların listenin üstünde olmasının daha kullanışlı olduğunu düşünüyorum, tercih tabii ki sizin.
.
Kod:
[FONT="Arial Narrow"]Sub MENÜ_LİSTELE()
Set ra = Sheets("RAPOR"): Set re = Sheets("REÇETE")
If ra.[C65536].End(3).Row > 16 Then ra.Range("A17:I" & ra.[C65536].End(3).Row + 1).ClearContents
For yemek = 3 To ra.[I16].End(3).Row
    ilk = WorksheetFunction.Match(ra.Cells(yemek, 9), re.Range("B:B"), 0)
    son = WorksheetFunction.CountIf(re.Range("B:B"), ra.Cells(yemek, 9)) + ilk - 1
        If WorksheetFunction.CountIf(re.Range("C:C"), ra.Cells(yemek, 9)) > 0 Then
            Cells(ra.[C65536].End(3).Row + 1, 2) = re.Cells(WorksheetFunction.Match(ra.Cells(yemek, 9), re.Range("[B][COLOR="Red"]B:B[/COLOR][/B]"), 0), 1)
        Else: Cells(ra.[C65536].End(3).Row + 1, 2) = re.Cells(WorksheetFunction.Match(ra.Cells(yemek, 9), re.Range("B:B"), 0), 2)
        End If
    For resat = ilk To son
        rasat = ra.[C65536].End(3).Row + 1: ra.Cells(rasat, 3) = re.Cells(resat, 3)
        ra.Cells(rasat, 4) = re.Cells(resat, 4): ra.Cells(rasat, 5) = re.Cells(resat, 5)
        ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5): ra.Cells(rasat, 7) = re.Cells(resat, 6)
        ra.Cells(rasat, 8) = re.Cells(resat, 7): ra.Cells(rasat, 9) = re.Cells(resat, 8)
    Next
Next
ra.Cells(ra.[C65536].End(3).Row + 1, 6) = "TOPLAM"
ra.Cells(ra.[C65536].End(3).Row + 1, 8) = _
        WorksheetFunction.Sum(ra.Range("H17:H" & ra.[C65536].End(3).Row))
ra.Cells(ra.[C65536].End(3).Row + 1, 9) = _
        WorksheetFunction.Sum(ra.Range("I17:I" & ra.[C65536].End(3).Row))
Msgbox "İŞLEM TAMAM"
End Sub[/FONT]
 
Son düzenleme:
Sayın Ömer BARAN merhaba,

Size nasıl teşekkür edeceğim bilemiyorum, çok çok sağ olun, sıra numarası ve çizgi işini koşullu biçimlendirme ile halletmeye çalışacağım,

Tek bir hata var, onu da halledebilirsek memnun olurum.

Tekrar teşekkür ederim.

 
Tekrar merhaba.
Önceki cevaptaki kod'da değişiklik yaptım.
Kontrol ediniz.
.
 
Ömer bey tekrar merhaba,

Sanırım bir yanlış anlama var,

"Ekmek" ve "Yoğurt" satırlarında ; Yemek adı kuver değil ; ekmek için ekmek, yoğurt için yoğurt olmalı,

Teşekkür ederim.
 
İyi de EKMEK ile örneğin PEÇETE arasındaki ayrımın nasıl yapılması lazım?
Yani B sütununa yazılacak veri, neyin, nerede aranmasıyla bulunacak, bulunduğunda neredeki bilgi yazılacak acaba?

Cümle olarak (I4 ve devamına yazılabilecek seçeneklerin tümünü düşünerek) bir kural söyleyebiliyor musunuz?

Siz bu cümleyi yazın, ben de bunu kod'lara yaptırmaya çalışayım.

Siz de fark etmişsinizdir, verdiğim kod mantık olarakşu şekilde;
"I sütunundaki veriyi REÇETE sayfasında B sütununda ara bulduğunda ilk ve son satırını tespit et,
REÇETE sayfasında bu iki satır arasındaki verileri C sütunundan itibaren RAPOR sayfasındaki yerlerine yaz
"
şeklinde.
Bunun gibi bir kural söylemelisiniz.
Ayrıca sıra numarasına ilişkin de bir kural söyleyin ona da bakayım.
.
 
Son düzenleme:
Ömer bey tekrar merhaba,

Açıkladığınız kod mantığı doğru, ancak yoğurt, ekmek ve servis malzemelerinin yemek adını "Reçete" sayfası "A" sütunundan alıyor, diğer yemeklerin isimleri "Reçete" sayfası "B" sütunundan geliyor,

Ben bu çelişkiyi çözemedim,

İlginiz ve sabrınız için tekrar teşekkür ediyorum.
 

Ekli dosyalar

Son düzenleme:
SERVİS Malz. nedeniyle oluyor aslında, yoksa hepsi için REÇETE sayfası B sütunu kriter alınacak derseniz mesele değil, ama o zaman da Peçete için SERVİS Malz. yazdırmak sorun olur.
Bir de aşağıdaki şekilde dener misiniz?

Bir de şöyle düşünün derim Ekmek, peçete gibi (gibi derken aynı işleme tabi tutulmayı kast ediyorum) kalemleri RAPOR sayfasında G3:G14 veya I3:I14 hücrelerinde ayırt edecek birşeylar yapılabilir.
.
Kod:
[FONT="Arial Narrow"]Sub MENÜ_LİSTELE()
Set ra = Sheets("RAPOR"): Set RE = Sheets("REÇETE")
If ra.[C65536].End(3).Row > 16 Then ra.Range("A17:I" & ra.[C65536].End(3).Row + 1).ClearContents
For yemek = 3 To ra.[I16].End(3).Row
Cells(ra.[C65536].End(3).Row + 1, 2) = ra.Cells(yemek, 9)
    ilk = WorksheetFunction.Match(ra.Cells(yemek, 9), RE.Range("B:B"), 0)
    son = WorksheetFunction.CountIf(RE.Range("B:B"), ra.Cells(yemek, 9)) + ilk - 1
    For resat = ilk To son
        rasat = ra.[C65536].End(3).Row + 1: ra.Cells(rasat, 3) = RE.Cells(resat, 3)
        ra.Cells(rasat, 4) = RE.Cells(resat, 4): ra.Cells(rasat, 5) = RE.Cells(resat, 5)
        ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5): ra.Cells(rasat, 7) = RE.Cells(resat, 6)
        ra.Cells(rasat, 8) = RE.Cells(resat, 7): ra.Cells(rasat, 9) = RE.Cells(resat, 8)
    Next
Next
With ra.Range("A17:A" & ra.[C65536].End(3).Row)
    .Formula = "=IF(ISERROR(MATCH(B17,$I$1:$I$14,0)),"""",MAX($A$16:A16)+1)"
    .Value = .Value
End With
ra.Cells(ra.[C65536].End(3).Row + 1, 6) = "TOPLAM"
ra.Cells(ra.[C65536].End(3).Row + 1, 8) = _
        WorksheetFunction.Sum(ra.Range("H17:H" & ra.[C65536].End(3).Row))
ra.Cells(ra.[C65536].End(3).Row + 1, 9) = _
        WorksheetFunction.Sum(ra.Range("I17:I" & ra.[C65536].End(3).Row))
MsgBox "İŞLEM TAMAM"
End Sub[/FONT]
 
SERVİS Malz. nedeniyle oluyor aslında, yoksa hepsi için REÇETE sayfası B sütunu kriter alınacak derseniz mesele değil, ama o zaman da Peçete için SERVİS Malz. yazdırmak sorun olur.
Bir de aşağıdaki şekilde dener misiniz?

Bir de şöyle düşünün derim Ekmek, peçete gibi (gibi derken aynı işleme tabi tutulmayı kast ediyorum) kalemleri RAPOR sayfasında G3:G14 veya I3:I14 hücrelerinde ayırt edecek birşeylar yapılabilir.

Sayın Ömer BARAN tekrar merhaba,

Sorun giderilmiştir, elinize sağlık.

Bana inanılmaz yardımlar sağladınız, emeğinizi ödeyemem.

Servis Malzemeleri için farklı bir çözüm elbet olabilir, ancak şu an için ona zaman ayıramadım.

Sevgi ve saygılarımla.
 
Estağfurullah, borç işi kolay.
Her ay bir hafta İstanbul'dayım (mesela bu ay önümüzdeki hafta),
yanında sigara olması koşuluyla içilecek çay, borç filan bırakmaz.
Benim benzinim bu ikili oluyor. :)
 
Estağfurullah, borç işi kolay.
Her ay bir hafta İstanbul'dayım (mesela bu ay önümüzdeki hafta),
yanında sigara olması koşuluyla içilecek çay, borç filan bırakmaz.
Benim benzinim bu ikili oluyor. :)

Teşekkür ederim,

Beklerim Sayın BARAN, haberleşiriz.

Saygılarımla.
 
Ömer bey merhaba,

3 no.lu mesajdaki resimde, toplam alanındaki gramajların , örneğin 114 kişi 5 gramdan 570 görünüyor, bu rakam 0,570 şeklinde görülmeli, kod da nasıl bir değişiklik yapılmalı ?

Teşekkür ederim.
 
Merhaba.

İlgili satıra, kırmızı kısmı ekleyin.
Sanırım istediğiniz bu.
Sütunun sayı biçimini ayarlarken ondalık ayracından sonraki basamak sayısını 3 olarak ayarlamayı unutmayın.
.
Kod:
[FONT="Arial Narrow"]ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5)[B][COLOR="Red"] / 1000[/COLOR][/B]: ra.Cells(rasat, 7) = RE.Cells(resat, 6)[/FONT]
 
Merhaba.

İlgili satıra, kırmızı kısmı ekleyin.
Sanırım istediğiniz bu.
Sütunun sayı biçimini ayarlarken ondalık ayracından sonraki basamak sayısını 3 olarak ayarlamayı unutmayın.
.
Kod:
[FONT="Arial Narrow"]ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5)[B][COLOR="Red"] / 1000[/COLOR][/B]: ra.Cells(rasat, 7) = RE.Cells(resat, 6)[/FONT]

Ömer bey merhaba,

Tamamdır, teşekkür ederim.

Hayırlı sabahlar...
 
Geri
Üst