Makro İle Google E-Tablolardan Veri Almak

Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Örnek dosya ekledim.
Bu dosyamda aşağıdaki formülü çalıştıramıyorum normalde aynı dosyanın makrosuz yani xls uzantılısında çalışıyor.
Bunun ne gibi bir sebebi olabilir?
2 gündür bunu çözmeye çalışıyorum.

Kod:
{=EĞERHATA(KAYDIR(veri!$A$8;KAÇINCI(BÜYÜK(EĞER((veri!$D$9:$D$53<>"")*(veri!$B$9:$B$53="8/A");(veri!$AB$9:$AB$53)-(veri!$A$9:$A$53/1000));veri!$A10);(veri!$AB$9:$AB$53)-((veri!$A$9:$A$53)/1000);0);SÜTUN(veri!B$8));"")}
Bu dizi formülünü
8A ve 8B sayfalarında B9 hücresinden sağa W9 a kadar çekiyorum. Sonra aşağıya doğru tüm satırlara...

Bunu yukarıdaki mesajımda şöyle açıklamıştım;



Buradaki "F1" ifadesi "Field1"in kısaltmasıdır. Yani, birinci alan F1, ikinci alan F2 ......

Yaptığınız düzeltmelere bakmadım çünkü örnek dosya yok, kontrol ettiyseniz sorun olmaz herhalde....

.
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Formül hangi sayfada/hücrede?

Dosyada "veri" adında bir sayfa da yok ... "Data" sayfasını mı kastediyorsunuz?

.
 
Son düzenleme:
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Formül hangi sayfada/hücrede?

Dosyada "veri" adında bir sayfa da yok ... "Data" sayfasını mı kastediyorsunuz?

.
pardon çok dosya denediğim için ismini değiştirmemişim veri ile Liste sayfaları aynı sayfalar

=EĞERHATA(KAYDIR(Liste!$A$8;KAÇINCI(BÜYÜK(EĞER((Liste!$D$9:$D$53<>"")*(Liste!$B$9:$B$53="8/A");(Liste!$AB$9:$AB$53)-(Liste!$A$9:$A$53/1000));Liste!$A10);(Liste!$AB$9:$AB$53)-((Liste!$A$9:$A$53)/1000);0);SÜTUN(Liste!B$8));"")
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Hangi hücrelerde bu formül? Göremedim ...

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
hücreye koymadım örnek dosyada
8A ve 8B sınıflarında B9 hücresine konulacak

8A sayfası için
Kod:
=EĞERHATA(KAYDIR(Liste!$A$8;KAÇINCI(BÜYÜK(EĞER((Liste!$D$9:$D$53<>"")*(Liste!$B$9:$B$53="8/A");(Liste!$AB$9:$AB$53)-(Liste!$A$9:$A$53/1000));Liste!$A10);(Liste!$AB$9:$AB$53)-((Liste!$A$9:$A$53)/1000);0);SÜTUN(Liste!B$8));"")
8B sayfası için
Kod:
=EĞERHATA(KAYDIR(Liste!$A$8;KAÇINCI(BÜYÜK(EĞER((Liste!$D$9:$D$53<>"")*(Liste!$B$9:$B$53="8/B");(Liste!$AB$9:$AB$53)-(Liste!$A$9:$A$53/1000));Liste!$A10);(Liste!$AB$9:$AB$53)-((Liste!$A$9:$A$53)/1000);0);SÜTUN(Liste!B$8));"")
Hangi hücrelerde bu formül? Göremedim ...

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
formüllerin koyulmuş hali bu dosyada
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Düzeltilmiş dosya ektedir;

.
 

Ekli dosyalar

Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
siz toplam çarpımı kaldırıp koşul kısmını şu şekilde yapmışsınız

Kod:
(Liste!$AB$9:$AB$53<>"")*(Liste!$B$9:$B$53="8/A")
Başka bir alanda bu formülü tek koşul yani sadece 8/A sınıfı koşulunu bırakrak kullanmam gerekiyordu.
Fakat tek koşul ile çalışmıyor.
Bunun sebebi ne olabilir?

Kod:
(Liste!$B$9:$B$53="8/A")
şeklinde çalışmıyor



Düzeltilmiş dosya ektedir;

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
siz toplam çarpımı kaldırıp koşul kısmını şu şekilde yapmışsınız
......
...
Ben çarpım falan bir şey kaldırmadım, sadece vermiş olduğunuz orjinal dosyadaki formülde Liste!$D$9:$D$53 olarak tarif ettiğiniz alanı Liste!$AB$9:$AB$53 olarak değiştirdim....

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Haklısınız. TOPLA.ÇARPIM ile de denemiştim.
O kadar çok deneme yaptım ki elimde onlarca dosya oldu. Böyle olunca birbirine girdi tümü..

peki sizin yazdığınızda iki koşul var.

EĞER((Liste!$AB$9:$AB$53<>"")*(Liste!$B$9:$B$53="8/A") ......

bunu tek koşula indirip

EĞER((Liste!$AB$9:$AB$53<>"")

şeklinde yapıyorum ama çalışmıyor. Tek koşul olarak nasıl çalıştırabilirim.

Sadece 8/A sınıfında okuyanlar şeklinde....


Kod:
=EĞERHATA(KAYDIR(Liste!$A$8;KAÇINCI(BÜYÜK(EĞER(Liste!$B$9:$B$53="8/A";(Liste!$AB$9:$AB$53)-(Liste!$A$9:$A$53/1000));Liste!$A10);(Liste!$AB$9:$AB$53)-((Liste!$A$9:$A$53)/1000);0);SÜTUN(Liste!C$8));"")
Bu şekilde çalışmıyor diğer şartı kaldırdığımızda


Ben çarpım falan bir şey kaldırmadım, sadece vermiş olduğunuz orjinal dosyadaki formülde Liste!$D$9:$D$53 olarak tarif ettiğiniz alanı Liste!$AB$9:$AB$53 olarak değiştirdim....

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sadece 8/A sınıfında okuyanlar ve Net'i "boş" olmayanlar ..... diyorsanız, zaten kullanmanız gereken;

Kod:
(Liste!$AB$9:$AB$53<>"")*(Liste!$B$9:$B$53="8/A")

Siz başka birşey demek istiyorsunuz herhalde, ya da ben anlamadım....

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Net'i boş olmayanları kaldırmam gerekiyor çünkü o şartı koyunca sınava kim girmemiş göremiyorum. onlarda sıralamada en altta görünsünler istiyorum

yok hayır aynı şeyden bahsediyoruz.

(Liste!$AB$9:$AB$53<>"")*(Liste!$B$9:$B$53="8/A")

kırmızı şartı kaldırmak istiyorum

bu şekilde olunca sınava girmemiş olanlar listenin altında yer almıyor.
Ben sınava girmeyenleride görebilmek adına onlarında sıralamanın en altında yer alması için bu şekilde yapmam gerekti.



Sadece 8/A sınıfında okuyanlar ve Net'i "boş" olmayanlar ..... diyorsanız, zaten kullanmanız gereken;

Kod:
(Liste!$AB$9:$AB$53<>"")*(Liste!$B$9:$B$53="8/A")

Siz başka birşey demek istiyorsunuz herhalde, ya da ben anlamadım....

.
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Örnek dosyada Liste sayfasındaki Şıkların girildiği sütunlar 10 adetti bunu 20 ya da 30 yaptığımzda Data sayfasına tüm veriler geliyor ancak Liste sayfasına gelmiyor bu ayarlamayı hangi satırdan yapmalıyız?
Sanırım bu işlem Sub ImportData2() içerisinde yapılıyor.


Kod:
Sheets("Liste").Range("D9:M" & NoListe) = ""
D9:M sanırım buradaki M'i değiştirip 20 tane veri için W yapacağız

Kod:
Sub ImportData2()
'   Haluk - 23/05/2020
'   sa4truss@gmail.com
    Dim NoData As Integer, NoListe As Integer, i As Integer, j As Byte
    Dim objADO As ADODB.Connection
    Dim objRS As ADODB.Recordset
    Dim strFile As String
    Dim strSQL As String
  
    NoListe = Sheets("Liste").Range("A" & Rows.Count).End(xlUp).Row
    NoData = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
  
    Sheets("Liste").Range("D9:M" & NoListe) = ""
  
    Set objADO = New ADODB.Connection
    Set objRS = New ADODB.Recordset
  
    strFile = ThisWorkbook.FullName
  
    With objADO
        If Val(Application.Version) < 14 Then
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .Properties("Extended Properties") = "Excel 8.0; HDR=No;IMEX=1;"
        Else
            .Provider = "Microsoft.Ace.OLEDB.12.0"
            .Properties("Extended Properties") = "Excel 12.0; HDR=No;IMEX=1;"
        End If
'       .CursorLocation = adUseClient
       .ConnectionString = strFile
       .Open
    End With
  
    With objRS
       .CursorType = adOpenStatic
       .CursorLocation = adUseClient
       .LockType = adLockBatchOptimistic
       .ActiveConnection = objADO
    End With
  
    For i = 9 To NoListe
        strSQL = "Select * from [Data$E3:O" & NoData & "] where F1 = " & Sheets("Liste").Range("B" & i)
      
        objRS.Source = strSQL
        objRS.Open
      
        If objRS.RecordCount > 0 Then
            For j = 0 To objRS.Fields.Count - 2
                tempData = objRS.Fields(j + 1).Value
                If tempData = "Boş" Or tempData = "Bos" Then tempData = Empty
                Sheets("Liste").Cells(i, j + 4) = tempData
                'Sheets("Liste").Cells(i, j + 4) = objRS.Fields(j + 1).Value
            Next
        End If
      
        If objRS.State = adStateOpen Then objRS.Close
    Next
  
    If objADO.State = adStateOpen Then objADO.Close
  
    Set objRS = Nothing
    Set objADO = Nothing
End Sub
Ekli dosyayı görüntüle 218363

@Haluk bey uzun süre sonra tekrar merhaba,
üstteki makronuzu yeni özelliklerde ekleyerek hala kullanmakta ve sizi anmaktayız
ancak şöyle bir durumla karşılaştık bu yıl.
Önceki yıllarda her sınıf seviyesinde öğrenci sayımız 100 öğrenci altındaydı.
Bu yıl her sınıf seviyesinde öğrenci sayımız 100 den fazla olunca üstteki makronun 100. satıra kadar verileri çektiğini sonrasını çekmediğini farkettik.
Bu kodlardan değilde google ın bir veri çekme sınırı olsa gerek diye düşünüyorum ancak emin değilim.

Bu sınırı aşıp 100 den sonraki verileri çekmek için bir öneriniz olabilir mi?
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021

Dosya > Web'de Yayınla > Bağlantı kısmından ilgili sayfanızın ismini seçin > Ekle Kısmı Web Sayfası olarak Kalsın > Yayınla > Ok > çıkan url 'den sınırsız olarak verileri alabilirsiniz. 5 dk da bir güncelleme yapıyor diye yazıyor ama çoğunlukla değişiklik yaptıktan kısa bir süre sonra güncelleniyor web sayfası yayını.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kişisel blog'umda bu işler için yayınladığım makaleleri incelerseniz, probleminizi çözebilirsiniz diye düşünüyorum. Veysel Bey'in bahsettiği olay da orada resimleriyle anlatılmaktadır.






.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Kişisel blog'umda bu işler için yayınladığım makaleleri incelerseniz, probleminizi çözebilirsiniz diye düşünüyorum. Veysel Bey'in bahsettiği olay da orada resimleriyle anlatılmaktadır.






.
Haluk Hocam yukarıda vermiş olduğunuz linklerde yer alan makaleler bloğunuzdan kaldırımış sanırım,
google-drive' da yer alan bir excel dosyasından ADO ile nasıl veri alabiliriz?
Aşağıdaki kodda yer alan; Satış dosyası "google drive" altında olması durumunda kodu nasıl uyarlayabiliriz?
teşekkürler, iyi akşamlar.

Kod:
Sub sorguu()
Dim myPath As String

myPath = "G:\Drive\Egitim\Dosyalar"

Set con = VBA.CreateObject("adodb.Connection")

yol = myPath & "\Satış.xlsx"

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select * from [Ocak$] Where [BÖLGE] Like 'ANK%' "

Set rs = con.Execute(sorgu)

Range("A2").CopyFromRecordset rs

Cells.EntireColumn.AutoFit

End Sub
 

Ekli dosyalar

Üst