(04/05/2021, 15:56)MURTAZAAF yazdı: [ -> ]@feraz Hocam size de teşekkür ederim. Çok çok özür diliyorum ben size hep Firuz diye hitap ediyordum, ne büyük dikkatsizlik.
Hocam Dizi formülleri hangileri acaba ben senelerdir İngilizce Excel kullandığım için Türkçe karşılıklarını pek bilmiyorum.
Saygılarımla
Murtaza AF
firuz yazdığınızın farkındaydım ama belli etmedim
Dizi formüller karışık abet ctrl+enter ile yapılıp başına ve sonuna { bu işaret gelir.Office 365 kullanıyorsanız bunada gerek yok.çaprazara yada filtrele gibi süper formüller var.
Sizin içn office 365 dediğse ya indis kaçıncı yada dolaylı kaçıncı uygun olur.ingilizcelerinde tam bilmiyorum aklımda kaldığı kadar yazayım.
Kaçıncı=match
İndis= index
Dolaylı= indirect
Dolaylı heralde tam olmadı ingilizcesi bulunca yazrım.
Dolaylının ingilizcesini doğru yazmışım bu arada baktım internete.
Dosyanız hazır aslında dün ekleyecektim sitede problem vardı galiba.
Arama_MakroVeFormullu adında sayfa ekledim makro için.
Dikkat edilmesi gerekenler B sütununda
Analizin Adı olmalı.Ve
Analizin Adı altındaki B sütunda satırlar boş olmamalı diğr kalıpa kadar.
Dosyada kalıplar aynı olmadığı için formül tam olmuyor oluyor lakin kalıp aynı değil o yüzden kod ile yaptım dediğim sayfada.
Formülün biriside alttaki gibi.
Kod:
=EĞERHATA(DOLAYLI("IVL!"&ADRES(KAÇINCI($B$2;IVL!$A:$A;0);2));"")
@
feraz hocam kendimce aşağıdakine benzer bir formül kullandım, amacım offset fonksiyonunu kullanarak sütunları 2 kaydırıp satırları da satır numarasına göre yukarı kaydırmaktı ama sütun eklemede hata veriyor, nerede hata yapıyorum?
Not: offset yerine cell() kullanınca adresler doğru ama offsette neden hata veriyor onu anlamadım
Cll.Offset((3 - RngBul.Row), 2).Address buradaki ofset koduyla sütunu 2 sağa kaydırmam gerekiyor A için C yapıyor ama B için M yapıyor
https://resim.accesstr.net/do.php?img=10985
Sub FormatliAra(ByVal txtAranan As String)
Dim RngAra As Range
Dim RngSonuc As Range
Dim RngBul As Range
Dim RngBul2 As Range
Dim Cll As Range
Set RngAra = ThisWorkbook.Worksheets("IVL").Range("A:A")
' Clear previous formats and set new format
Application.FindFormat.Clear
Application.FindFormat.Font.Bold = True 'formatlı arama için gerekli kod
Set RngBul = RngAra.Find(txtAranan, SearchFormat:=True)
ThisWorkbook.Worksheets("Arama").Range("C2:L100").ClearContents 'Arama Sayfasını boşaltan kod
If RngBul Is Nothing Then Exit Sub 'veri yoksa işlemi iptal etme
Set RngAra = ThisWorkbook.Worksheets("IVL").Range("A" & RngBul.Row & ":A" & RngBul.Row + 100)
Set RngBul2 = RngAra.Find("IVL No", SearchFormat:=True)
Set RngSonuc = ThisWorkbook.Worksheets("IVL").Range("A" & RngBul.Row - 1 & ":L" & RngBul2.Row - 1)
Debug.Print "RngBul2", RngBul2.Address(0, 0), RngSonuc.Address(0, 0)
For Each Cll In RngSonuc
Debug.Print Cll.Address(0, 0), ThisWorkbook.Worksheets("Arama").Range(Cll.Offset((3 - RngBul.Row), 2).Address(0, 0)).Address(0, 0), Cll.Value
Next Cll
Application.FindFormat.Clear
End Sub
bu da alternatif bir yöntem dilerim işinize yarar
Sub FormatliAra(ByVal txtAranan As String)
Dim RngAra As Range
Dim RngSonuc As Range
Dim RngBul As Range
Dim RngBul2 As Range
Dim Cll As Range
Dim Sht As Worksheet
Dim Sht2 As Worksheet
Set Sht = ThisWorkbook.Worksheets("Arama")
Set Sht2 = ThisWorkbook.Worksheets("IVL")
Set RngAra = Sht2.Range("A:A")
' Clear previous formats and set new format
Application.FindFormat.Clear
Application.FindFormat.Font.Bold = True 'formatlı arama için gerekli kod
With Sht
Set RngBul = RngAra.Find(txtAranan, SearchFormat:=True)
SonStr = .Cells(.Rows.Count, "c").End(xlUp).Row
.Range("C2:x" & SonStr).ClearContents 'Arama Sayfasını boşaltan kod
If RngBul Is Nothing Then Exit Sub 'veri yoksa işlemi iptal etme
Set RngAra = Sht2.Range("A" & RngBul.Row & ":A" & RngBul.Row + 100)
Set RngBul2 = RngAra.Find("IVL No", SearchFormat:=True)
Set RngSonuc = Sht2.Range("A" & RngBul.Row - 1 & ":L" & RngBul2.Row - 1)
Debug.Print "RngBul2", RngBul2.Address(0, 0), RngSonuc.Address(0, 0)
For Each Cll In RngSonuc
If Cll.Value <> "" Then .Cells(Cll.Row + 3 - RngBul.Row, Cll.Column + 2).Value = Cll.Value
Next Cll
SonStr = .Cells(.Rows.Count, "c").End(xlUp).Row
.Range("C" & SonStr & ":N" & SonStr).Merge
.Range("C2:N" & SonStr).BorderAround Weight:=xlThin
End With
Application.FindFormat.Clear
End Sub
(06/05/2021, 02:15)berduş yazdı: [ -> ]Cll.Offset((3 - RngBul.Row), 2).Address buradaki ofset koduyla sütunu 2 sağa kaydırmam gerekiyor A için C yapıyor ama B için M yapıyor
Merhaba abey.
sanıyorum satır birleştirmesinden dolayı oluyor.
IVL sayfasındaki veriler standart değil ve merged cell dolu. Beynim yandı bir ara uğraşırken kenara koydum salim kafayla bakayım diye ama sizler hızlı çıktınız