excel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
excel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Haziran 2025 Cuma

Excelde sayıyı yazıyla yazdırma

Yeni sürüm

06/06/2025: Kodlar güncellendi

Option Explicit
Function YAZIYLA(sayi As Variant) As String
' Sayıyı yazıyla yazar
'
' Mesut Akcan
' https://www.mesutakcan.blogspot.com
' makcan@gmail.com
'
' 23 Nisan 2004
' Güncelleme: 5 Haziran 2025

Dim birler(9) As String, onlar(9) As String, buyukSayi(4) As String
Dim basamak(1 To 15) As Byte, grup(1 To 3) As Byte
Dim sayiMetni As String, grupMetni As String
Dim sonuc As String
Dim negatif As Boolean
Dim i As Byte, j As Byte 'index


If (Not IsNumeric(sayi)) Or (Len(sayi) > 15) Then ' Sayı değilse veya 15 basamaktan büyükse hata
	YAZIYLA = "#HATA!"
Exit Function
End If

If sayi < 0 Then
	negatif = True 'Sayı negatif
sayi = Abs(sayi)
End If

' Birler basamağı
birler(0) = ""
birler(1) = "Bir"
birler(2) = "İki"
birler(3) = "Üç"
birler(4) = "Dört"
birler(5) = "Beş"
birler(6) = "Altı"
birler(7) = "Yedi"
birler(8) = "Sekiz"
birler(9) = "Dokuz"

' Onlar basamağı
onlar(0) = ""
onlar(1) = "On"
onlar(2) = "Yirmi"
onlar(3) = "Otuz"
onlar(4) = "Kırk"
onlar(5) = "Elli"
onlar(6) = "Altmış"
onlar(7) = "Yetmiş"
onlar(8) = "Seksen"
onlar(9) = "Doksan"

' Büyük sayılar
buyukSayi(0) = "Trilyon "
buyukSayi(1) = "Milyar "
buyukSayi(2) = "Milyon "
buyukSayi(3) = "Bin "
buyukSayi(4) = ""

sayiMetni = Right(String(15, "0") & CStr(Fix(sayi)), 15) ' Sayıyı metne çevir ve boşlukları kaldır

' 1'den 15'e kadar döngü
' karakterleri tek tek al ve sayıya çevir ve diziye aktar
For i = 1 To 15
	basamak(i) = CByte(Mid(sayiMetni, i, 1))
Next

sonuc = "" ' Sonuç metni

' sayı metnini 3'erli 5 gruba ayır ve her grubu yazıya çevir
For i = 0 To 4
	For j = 1 To 3 'gruptaki yüzler, onlar, birler basamakları
	grup(j) = basamak((i * 3) + j)
	Next
	
	Select Case grup(1) ' Yüzler basamağı
		Case 0 ' sıfır ise
			grupMetni = "" ' Yüzler basamağı metni boş
		Case 1 ' 1 ise
			grupMetni = "Yüz" ' Yüzler basamağı metni "Yüz"
		Case Else ' 2-9 arası ise
			grupMetni = birler(grup(1)) & "Yüz" ' Yüzler basamağı metni "İkiYüz", "ÜçYüz" vb.
		End Select
		
		grupMetni = grupMetni & onlar(grup(2)) & birler(grup(3)) ' Onlar ve birler basamağını ekle
		
		If grupMetni <> "" Then
			grupMetni = grupMetni & buyukSayi(i) ' Büyük sayıları ekle
			If (i = 3) And (grupMetni = "BirBin ") Then
				grupMetni = "Bin" ' "BirBin" durumunu düzelt
			End If
		End If
	sonuc = sonuc & grupMetni ' Sonucu birleştir
Next
sonuc = Trim(sonuc)
If sonuc = "" Then
	sonuc = "Sıfır"
ElseIf negatif Then
	sonuc = "Eksi " & sonuc
End If
YAZIYLA = sonuc
End Function 

YAZIYLA fonksiyonunu kullanma

  • Kodları kopyalayın.
  • Excelde dosya açıkken ALT+F11 tuşlarına basın (yada Şerit menüden Geliştirici / Visual Basic tıklayın)
  • VBA Editöründe menüden Insert / Module tıklayın.
  • Menüden Edit / Paste ile ya da Ctrl+V ile kopyalanan kodları yapıştırın.
  • Artık YAZIYLA fonksiyonunu diğer Excel fonksiyonları gibi hücrelerde kullanabilirsiniz.

Eski sürüm

Excelde sayıyı yazıyla yazdırmak için gerekli fonksiyonu oluşturan VBA kodları
Kodlar aşağıdaki excel dosya içinde de mevcuttur.
VBA kodlarını görmek için dosyayı açtıktan sonra ALT+F11'e basın.
İndir YAZIYLA.XLS 130 Kb

YAZIYLA fonksiyonunu tüm excel dosyalarında kullanma

Bu işlemler bir defa yapılacaktır.
yaziyla.xls dosyasını açın.
Oku1, Oku2 ve Test sayfalarını silin (Sayfaya geçin Düzen/Sayfayı sil)
Dosya / Farklı kaydet'i tıklayın
Kayıt Türü listesinden "Microsoft Office Excel Eklentisi (*.xla)" seçin
Kayıt Yeri 'nde "Addins" belirir.
Kaydet'i tıklayın
Dosyayı kapatın

Yeni bir excel dosyası ya da varolan bir excel dosyanızı açın
Araçlar / Eklentiler' i tıklayın
Burada "Kullanılabilir eklentiler"de "Yazıyla" göreceksiniz. Yanındaki kareyi tıklayıp seçin.
Tamam'ı tıklayın.
Artık her excel dosyasında YAZIYLA fonksiyonunu başka bir işlem yapmadan rahatlıkla kullanabilirsiniz.
Option Explicit
Function YAZIYLA(sayi As Variant) As String
' Sayıyı yazıyla yazar

' Mesut Akcan
' https://www.mesutakcan.blogspot.com
' makcan@gmail.com

' 23 Nisan 2004
' Güncelleme: 31 Mart 2011

Dim b(9) As String, y(9) As String, m(4) As String, a As String
Dim v(15), c(3)
Dim pozitif As Byte, x As Byte
Dim s As String, e As String

b(0) = ""
b(1) = "Bir"
b(2) = "İki"
b(3) = "Üç"
b(4) = "Dört"
b(5) = "Beş"
b(6) = "Altı"
b(7) = "Yedi"
b(8) = "Sekiz"
b(9) = "Dokuz"

y(0) = ""
y(1) = "On"
y(2) = "Yirmi"
y(3) = "Otuz"
y(4) = "Kırk"
y(5) = "Elli"
y(6) = "Altmış"
y(7) = "Yetmiş"
y(8) = "Seksen"
y(9) = "Doksan"

m(0) = "Trilyon "
m(1) = "Milyar "
m(2) = "Milyon "
m(3) = "Bin "
m(4) = ""

a = Str(Int(sayi))
If Left$(a, 1) = " " Then pozitif = 1 Else pozitif = 0
a = Right$(a, Len(a) - 1)
For x = 1 To Len(a)
	If (Asc(Mid$(a, x, 1)) > Asc("9")) Or (Asc(Mid$(a, x, 1)) < Asc("0")) Then GoTo hata
Next x
If Len(a) > 15 Then GoTo hata
a = String(15 - Len(a), "0") + a
For x = 1 To 15
	v(x) = Val(Mid$(a, x, 1))
Next x
s = ""
For x = 0 To 4
	c(1) = v((x * 3) + 1)
	c(2) = v((x * 3) + 2)
	c(3) = v((x * 3) + 3)
	If c(1) = 0 Then
		e = ""
	ElseIf c(1) = 1 Then
		e = "Yüz"
	Else
		e = b(c(1)) + "Yüz"
	End If
e = e + y(c(2)) + b(c(3))
If e <> "" Then e = e + m(x)
If (x = 3) And (e = "BirBin ") Then e = "Bin"
s = s + e
Next x
If s = "" Then s = "Sıfır"
If pozitif = 0 Then s = "Eksi " + s
YAZIYLA = s
GoTo tamam
hata:
YAZIYLA = "Hata"
tamam:
End Function

19 Kasım 2023 Pazar

Excel VBA: Belirtilen aralıktaki çift, tek veya tüm sayıların sayısı

Yayınlama: 4/4/2014
Güncelleme: 19/11/2023
Eğer Excel'de kullanabileceğiniz bir özel fonksiyon olsaydı, "SayiSay" fonksiyonu şu şekilde işlev görebilirdi:

=SayiSay(hücreler; sayiCesidi)

Bu fonksiyon, belirtilen hücre aralığındaki sayıların sayısını belirli bir kriter veya sayı türüne göre sayan bir formül sağlar. "hücreler" parametresi, sayıları içeren hücre aralığını temsil ederken, "sayiCesidi" parametresi ise sayılardan hangi türleri saymak istediğinizi belirler.

Örneğin:

Eğer "sayiCesidi" parametresi 1 olarak belirlenirse, fonksiyon belirtilen hücre aralığındaki tek sayıların sayısını verir.
Eğer "sayiCesidi" parametresi 2 olarak belirlenirse, fonksiyon çift sayıların sayısını verir.
Eğer "sayiCesidi" parametresi belirtilmez veya 0 olarak belirlenirse, fonksiyon hücre aralığındaki tüm sayıların sayısını verir.
Bu örnek formül, belirli bir hücre aralığındaki sayıların çeşidine göre sayım yapmanıza olanak tanıyan özelleştirilmiş bir Excel fonksiyonunu temsil etmektedir. Ancak, bu fonksiyon Excel'in standart fonksiyonları arasında yer almamaktadır, bu nedenle böyle bir fonksiyonu kullanabilmek için aşağıdaki kodlar gibi özel bir VBA (Visual Basic for Applications) makro yazmanız gerekecektir.

Fonksiyonun kullanımı

hücreler olarak: "A1:E4" gibi çok sayıda hücre
sayiCesidi olarak:
Tüm sayılar için 0
Tek sayı için 1
Çift Sayı için 2
girin.

Örnek 1: =SayiSay("A1:E5")
"A1:E5" aralığındaki tüm sayıların sayısını verir.
Örnek 2: =SayiSay("A1:E5";0)
"A1:E5" aralığındaki tüm sayıların sayısını verir.
Örnek 3: =SayiSay("A1:E5";1)
"A1:E5" aralığındaki tek sayıların sayısını verir.
Örnek 4: =SayiSay("A1:E5";2)
"A1:E5" aralığındaki çift sayıların sayısını verir.

Kodları eklemek için:
Excelde ALT+F11'e basın.
Menüden Insert / Module tıklayın.
Aşağıdaki kodları ekleyin
Option Explicit
'Blog sayfam	 : https://mesutakcan.blogSpot.com
'Youtube Kanalım : https://www.youtube.com/mesutakcan
'WhatsApp kanalım: https://www.whatsapp.com/channel/0029Va5h4cQ0LKZLuB9Dpy23
'Telegram kanalım: https://t.me/mesutakcan
Enum eSayiCesidi
	tumSayilar = 0
	tekSayilar = 1
	ciftSayilar = 2
End Enum

Function SayiSay(hucreler As Range, _
	Optional sayiCesidi As eSayiCesidi = tumSayilar) As Long
	
	Dim hucre As Range
	Dim sayiAdedi As Long
	
	' belirtilen tüm hücreler
	For Each hucre In hucreler
		' hücre değeri sayı ise
		If IsNumeric(hucre.Value) Then
			'sayıları say
			If (sayiCesidi = tumSayilar) Or _
				(sayiCesidi = tekSayilar And hucre.Value Mod 2 <> 0) Or _
				(sayiCesidi = ciftSayilar And hucre.Value Mod 2 = 0) Then
					sayiAdedi = sayiAdedi + 1
			End If
		End If
	Next
	
	SayiSay = sayiAdedi
End Function

29 Ekim 2023 Pazar

VBA'da Erken Bağlama ve Geç Bağlama

VBA (Visual Basic for Applications) Microsoft Office uygulamalarını özelleştirme ve otomasyon için yaygın bir şekilde kullanılan bir araçtır. Ayrıca AutoCAD, SolidWorks gibi programlarda eklenti olarak kullanılmaktadır.

VBA nesnelerle etkileşim kurarken iki farklı bağlama türü kullanılır.

  1. Erken bağlama (Early binding)
  2. Geç bağlama (Late binding).

Bu yazıda, her iki bağlama türünü açıklayacak ve hangi durumda hangi türün kullanılması gerektiğini inceleyeceğiz.

1) Erken Bağlama

Erken bağlama nedir?

Erken bağlama(early binding), VBA kodunun nesnelerin ve metodların türünü ve özelliklerini tasarım zamanında tanımladığı bir bağlama türüdür. Erken bağlama, VBA kodunun daha hızlı çalışmasını sağlar ve daha fazla tür güvenliği sunar. Ayrıca, IntelliSense gibi kod geliştirme araçlarına daha fazla destek sağlar.

Erken bağlamanın avantajları

  • Performans: Erken bağlama, VBA kodunun daha hızlı çalışmasını sağlar. Çünkü nesnelerin ve yöntemlerin türleri tasarım zamanında bilindiği için, derleyici daha iyi optimize edebilir.
  • Tür Güvenliği: Erken bağlama, kodunuzun daha güvenli hale gelmesini sağlar. Çünkü türler ve yöntemler tasarım zamanında belirlendiği için, hatalı türlerle veya eksik yöntemlerle çalışma riski daha düşüktür.
  • Kod Hata Ayıklama: Erken bağlama ile kod hata ayıklamak daha kolaydır. Çünkü nesnelerin ve yöntemlerin türleri belirli olduğu için, hata ayıklayıcı daha fazla yardımcı olabilir.
  • IntelliSense Desteği: Erken bağlama, kod yazarken IntelliSense(akıllı kod tamamlama) gibi kod geliştirme araçlarının kullanımını destekler. Bu, kodunuzu daha hızlı ve hatasız bir şekilde yazmanıza yardımcı olur.
  • Kodun Okunabilirliği: Erken bağlama ile çalışırken, kodunuz daha okunabilir hale gelir. Çünkü nesnelerin ve yöntemlerin türleri ve özellikleri açıkça belirtilir.
  • Referans Yönetimi: Erken bağlama, projenizin referanslarını daha iyi yönetmenizi sağlar. Referansları eklemek ve kaldırmak daha kolaydır.
  • Dokümantasyon Desteği: Erken bağlama, nesnelerin ve yöntemlerin tasarım zamanında belirlendiği için, daha iyi dokümantasyon sağlar. Bu, başkalarının kodunuzu daha iyi anlamasına yardımcı olur.
  • Kodun Daha İyi Anlaşılması: Erken bağlama ile çalışırken, kodun ne yaptığı daha açık bir şekilde anlaşılır. Çünkü türler ve yöntemler adından ve belirli olduklarından, kodun amacı daha belirgin hale gelir.
Erken bağlama, özellikle büyük ve karmaşık projelerde, performans ve güvenlik açısından büyük avantajlar sunar. Ancak, belirli durumların gerektirdiği esneklik ve uyumluluk ihtiyaçlarına göre geç bağlama (late binding) veya karışık bir yaklaşım kullanmak da gerekebilir. Projenizin ihtiyaçlarına ve hedeflerine bağlı olarak doğru bağlama türünü seçmek önemlidir.

Erken bağlamanın dezavantajları

  • Versiyon Uyumsuzluğu: Erken bağlama, belirli bir sürümün nesnelerini ve özelliklerini kullanmayı gerektirir. Bu, uygulamanın daha yeni veya daha eski sürümleri ile uyumsuzluk sorunlarına yol açabilir. Kodunuzu bir sürümden diğerine taşırken düzenlemeler yapmanız gerekebilir.
  • Dosya Boyutu: Erken bağlama kullanırken, projenizin dosya boyutu artabilir. Çünkü erken bağlama referanslarını projenize eklediğinizde, bu referanslar projenizin boyutunu artırabilir. Bu, dosyanın taşınabilirliğini ve paylaşılabilirliğini azaltabilir.
  • Yavaş Geliştirme: Erken bağlama ile çalışırken, IntelliSense gibi kod geliştirme araçları daha iyi çalışsa da, bazı durumlarda daha fazla kod yazma işlemi gerekebilir. Bu, kodunuzu geliştirmenin daha fazla zaman almasına neden olabilir.
  • Referans Yönetimi: Erken bağlama kullanırken, projenize eklediğiniz referansları yönetmek zor olabilir. Özellikle başka bir bilgisayara taşındığında veya farklı bir VBA ortamında çalıştırıldığında referansların eksik veya hatalı olması sorunlara yol açabilir.
  • Esneklik Sorunları: Erken bağlama, projenizin esnekliğini azaltabilir. Eğer uygulamanın veya nesne modelinin belirli bir sürümüne bağlı kalırsanız, yeni özelliklere veya sürümlere uyum sağlama konusunda kısıtlamalarla karşılaşabilirsiniz.
  • Hata Ayıklama: Erken bağlama, hata ayıklamayı bazen zorlaştırabilir. Çünkü nesne türleri ve özellikleri kodun yazıldığı anda belli olur ve çalışma zamanında değiştirilemez. Bu, hataların nedenlerini bulmayı zorlaştırabilir.

Bu dezavantajlar, projenizin gereksinimlerine ve çalışma koşullarına bağlı olarak değişebilir. Erken bağlama ve geç bağlama (late binding) arasında doğru dengeyi bulmak, projenizin ihtiyaçlarına uygun bir şekilde kod yazmanıza yardımcı olabilir.

Erken bağlama kullanımı:

Erken bağlama kullanmak için öncelikle hedef uygulamanın veya nesne modelinin referanslarını eklemeniz gerekir.

14 Ekim 2023 Cumartesi

AutoCAD VBA. Excele veri yaz-3

VBA kodlarıyla ofis programlarına bağlantı kurulabilir ve programla ilgili birçok işlem yaptırılabilir.
AutoCAD VBA'dan Excel'e bağlantı kurulabildiği gibi tersi de mümkündür
Hatta birçok uyumlu Windows programı birbiri ile bağlanıp kodlarla işlemler yapabilir.

Bu videoda AutoCAD VBA ile Excel'e bağlanmayı ve veri aktarmayı göstermeye devam ediyorum.
  • Excele sayfa ekle
  • Excel sayfası silme
  • AutoCAD çizim nesne adlarını Excele yaz
  • AutoCAD çizim alanındaki çizgilerin uzunluklarını ve toplamını Excele yaz
  • Excel dosyasını aç
Videoda kullanılan VBA kodları:
'Mesut Akcan
'https://mesutakcan.blogspot.com
'https://youtube.com/mesutakcan
'makcan@gmail.com

Sub excelDosyaAc2()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'Excel uygulamasını temsil eden nesne
	Dim wb As Excel.Workbook 'Excel çalışma kitabını temsil eden nesne

	Set xla = Excel.Application
	xla.Visible = True  'uygulamayı ekranda göster

	Set wb = xla.Workbooks.Open("c:\test\test2.xlsx") 'dosyayı excel ile aç
End Sub

Sub excelDosyaAc1()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Visible = True 'ekranda excel nesnesini göster

	Dim dosya As Excel.Workbook 'excel çalışma kitabı nesnesi
	Set dosya = xla.Workbooks.Open("c:\test\test1.xlsx") 'dosyayı excel ile aç
End Sub

Sub exceleYaz6()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar

	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster
   
	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	Set sayfa = xla.ActiveSheet
	sayfa.Name = "Liste"

	Dim ent As AcadEntity 'AutoCad Varlık

	For Each ent In ThisDrawing.ModelSpace 'Çizim alanındaki tüm varlıklar
		If ent.ObjectName = "AcDbLine" Then
			satir = satir + 1
			uz = ent.Length
			sayfa.Cells(satir, 2) = uz
			toplamUzunluk = toplamUzunluk + uz
		End If
	Next

	sayfa.Cells(satir + 1, 1).Value = "TOPLAM:"
	sayfa.Cells(satir + 1, 2).Value = toplamUzunluk
	sayfa.Cells(satir + 1, 2).Font.color = vbRed

	sayfa.SaveAs "c:\TEST\test2.xlsx" 'Dosyaya kaydet
End Sub

Sub exceleYaz5()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar

	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster
   
	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	'Son sayfadan sonra ekle
	Set sayfa = xla.Worksheets.Add(After:=xla.Worksheets(xla.Worksheets.Count))
	sayfa.Name = "TEST"

	Dim ent As AcadEntity 'AutoCad Varlık

	For Each ent In ThisDrawing.ModelSpace 'Çizim alanındaki tüm varlıklar
		satir = satir + 1 'satır numarasını 1 arttır
		sayfa.Cells(satir, 1).Value = ent.ObjectName 'hücreye nesne adını yaz
	Next
	sayfa.SaveAs "c:\TEST\test1.xlsx" 'Dosyaya kaydet
End Sub

Sub exceleYaz4()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar

	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster
   
	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	'Set sayfa = xla.Worksheets.Add(After:=xla.Worksheets(xla.Worksheets.Count)) 'Son sayfadan sonra yeni sayfa ekle

	'2. sayfadan sonra ekle
	Set sayfa = xla.Worksheets.Add(After:=xla.Worksheets(2))
	sayfa.Name = "TEST"

	'TEST sayfasından sonra ekle
	Set sayfa = xla.Worksheets.Add(After:=xla.Worksheets("TEST"))
	sayfa.Name = "DENEME"

	'TEST sayfasından önce ekle
	Set sayfa = xla.Worksheets.Add(Before:=xla.Worksheets("TEST"))
	sayfa.Name = "HESAP"

	sayfa.Delete

	Set sayfa = xla.Worksheets("TEST")
	sayfa.Delete 'sayfa sil

	xla.Worksheets("DENEME").Delete 'sayfa sil
End Sub

Sub exceleYaz3()
	'2. yöntem: Geç bağlanma. Late Binding

	Dim xla As Object 'nesne için değişken tanımla
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Visible = True 'ekranda excel nesnesini göster

	Dim wb As Object 'nesne için değişken tanımla
	Set wb = xla.Workbooks.Add 'Yeni dosya oluştur.

	Dim sayfa As Object 'nesne için değişken tanımla
	Set sayfa = wb.Worksheets.Add 'yeni dosya oluştur
	sayfa.Name = "TEST" 'sayfa adını değiştir.
	sayfa.Cells(4, 3) = "Merhaba" 'satır 4, sütun 3'e Merhaba yaz
End Sub

Sub exceleYaz2()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	'xla.Worksheets.Add 'yeni excel sayfası ekle

	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	Set sayfa = xla.Worksheets.Add 'yeni excel sayfası ekle

	sayfa.Name = "TEST" 'sayfa adını değiştir

	Set sayfa = xla.Worksheets(2) 'excel 2. sayfa
	sayfa.Activate 'sayfayı aktif et

	With sayfa.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		'.Select 'B3 hücresini seç
	End With
End Sub

Sub exceleYaz1()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	With xla.Application.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		.Select 'B3 hücresini seç
	End With
	xla.Quit 'Exceli kapat
End Sub

12 Ekim 2023 Perşembe

AutoCAD VBA. Excele veri yaz-2


VBA kodlarıyla Microsoft Office programlarına bağlantı kurulabilir ve programla ilgili birçok işlem yaptırılabilir.

AutoCAD VBA'dan Excel'e bağlantı kurulabildiği gibi tersi de mümkündür
Hatta birçok uyumlu Windows programı birbiri ile bağlanıp kodlarla işlemler yapabilir.

Bu videoda AutoCAD VBA ile Excel'e bağlanmayı ve veri aktarmayı göstermeye devam ediyorum.

Excel ile bağlantı kurmak için 2 yöntem var.
1) Erken bağlama. Early Binding
2) Geç bağlama. Late Binding

Yöntemlerin avantaj ve dezavantajları

Erken bağlama:

Avantajları:
  • Çalışması daha hızlıdır.
  • Intellisense(Akıllı kod tamamlama) bağlanan nesnelerde kullanılabildiği için kod yazımı daha kolaydır.
  • Programın başlangıcında tüm değişkenlere değer atama işlemini yapar. Bu nedenle, programın bellek kullanımı artabilir.
Dezavantajları:
  • Referans eklenmelidir. Ekli değilse çalışmaz.

Geç bağlama:

Avantajları:
  • Referans eklemek gerekli değildir. Kullanıcının bir işlem yapması gerekmez.
  • Bellek kullanımı verimlidir.
Dezavantajları:
  • Nesneye bağlanma çalışma zamanında gerçekleştiği için yavaş çalışır.
  • Intellisense(Akıllı kod tamamlama) bağlanan nesnelerde çalışmaz. Bu yüzden kod yazmak zorlaşır.
Videoda kullanılan VBA kodları:
Sub exceleYaz3()
	'2. yöntem: Geç bağlanma. Late Binding
	Dim xla As Object 'nesne için değişken tanımla
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Visible = True 'ekranda excel nesnesini göster

	Dim wb As Object 'nesne için değişken tanımla
	Set wb = xla.workbooks.Add 'Yeni dosya oluştur.

	Dim sayfa As Object 'nesne için değişken tanımla
	Set sayfa = wb.worksheets.Add 'yeni dosya oluştur
	sayfa.Name = "TEST" 'sayfa adını değiştir.
	sayfa.cells(4, 3) = "Merhaba" 'satır 4, sütun 3'e Merhaba yaz

End Sub

Sub exceleYaz2()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	'xla.Worksheets.Add 'yeni excel sayfası ekle

	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	Set sayfa = xla.worksheets.Add 'yeni excel sayfası ekle

	sayfa.Name = "TEST" 'sayfa adını değiştir

	Set sayfa = xla.worksheets(2) 'excel 2. sayfa
	sayfa.Activate 'sayfayı aktif et

	With sayfa.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		'.Select 'B3 hücresini seç
	End With

End Sub

Sub exceleYaz1()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	With xla.Application.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		.Select 'B3 hücresini seç
	End With
	xla.Quit 'Exceli kapat
End Sub

11 Ekim 2023 Çarşamba

AutoCAD VBA. Excele veri yaz-1


VBA kodlarıyla Microsoft Office programlarına bağlantı kurulabilir ve programla ilgili birçok işlem yaptırılabilir.
AutoCAD VBA'dan Excel'e bağlantı kurulabildiği gibi tersi de mümkündür.
Hatta birçok uyumlu Windows programı birbiri ile bağlanıp kodlarla işlemler yapabilir.

Bu videoda AutoCAD VBA ile Excel'e bağlanmayı ve veri aktarmayı gösterdim.

Excel ile bağlantı kurmak için 2 yöntem var.
1. yöntem: Referans kullanmak. Erken bağlanma(Early Binding)
2. yöntem: Referans kullanmadan kod ile bağlanma. Geç bağlanma(Late Binding)
İki yöntemin de avantaj ve dezavantajları var.
Bu videoda 1. yöntem ile Excele nasıl bağlanacağı gösterildi.

Videoda kullanılan VBA kodları:
Sub exceleYaz()
	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda göster 'excel nesnesini göster
	'xla.Application.Cells(3, 2).Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
	'xla.Application.Range("B3").Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
	With xla.Application.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		.Select 'B3 hücresini seç
	End With
	xla.Quit 'Exceli kapat
End Sub

13 Ağustos 2023 Pazar

Excel VBA: Aktif hücre renklendirme

Excel VBA makrosu kullanarak, Excel tablosundaki aktif hücreleri renklendirerek hücre takibini yapmak  kolaylaştırılabilir.

Bu işlem için aşağıdaki VBA makro kodunu kullanabilirsiniz.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
	'Mesut Akcan
	'13/8/2023
	'mesutakcan.blogspot.com

	'Geri Al (Ctrl + Z) çalışmaz
	Static oncekiHucre As Range, zeminRengi As Long
	' Önceki hücrenin zemin rengini geri yükle
	If Not oncekiHucre Is Nothing Then
		oncekiHucre.Interior.ColorIndex = zeminRengi
	End If
	' Aktif hücre zemin rengini aktar
	zeminRengi = Target.Interior.ColorIndex
	' Aktif hücrenin zemin rengini sarı yap
	Target.Interior.ColorIndex = 6 'sarı renk
	' Aktif hücre bilgilerini aktar
	Set oncekiHucre = Target
End Sub

23 Haziran 2023 Cuma

Excelde hücreye kesirli sayı girme

Yayınlama: 19/7/2016
Güncelleme: 23/6/2023
Excel hücresine 3/4 gibi bir kesirli sayı girmeye çalıştığınızda girilen veri o yılın "3 Nisan" tarihi olarak algılanıp hücreyi tarih formatına dönüştürür.

Eğer amacınız hücreye 3/4 girip bu şekilde kalmasını sağlamaksa, birkaç yol denenebilir.

1. yol:

Hücreye girilen değerin girildiği gibi görünmesi için önce ' (tırnak) işareti koyun.
'3/4 gibi.
Tırnak işareti hücrede görünmeyecektir. Bu bir metindir sayı olarak işlem görmez.

2. yol:

Önce hücre biçimini kesir olarak değiştirin.
Sonra hücreye kesirli değeri girin. 3/4 gibi ya da 2 3/4 (2 tam 3/4)

3. yol:

Hücre biçimlendirmeye gerek kalmadan hücreye tam sayılı kesir olarak girin
3/4 için 0 3/4 ( 0 boşluk 3/4 )
5 tam 5/16 için  5 5/16

2. ve 3. yol ile girilen veriler sayı olarak işlem görür.






13 Aralık 2022 Salı

Excel satırlarını belli sayıda bölme ve dosya veya sayfalara aktarma

Yayınlama: 20/02/2021
Güncelleme: 13/12/2022
Donanım Haber Forumundaki bir soru üzerine cevap olarak verdiğim Excel VBA kodlamaları buraya aktarıyorum.

Soru 1

Elimde içerisinde 40.000 satır veri bulunan bir Excel dosyası var. Bu 40.000 satırı 100'erli olarak bölmem gerekiyor.

Cevap: Aşağıdaki yazdığım VBA makrosu ile 100'erli satır olarak yeni eklenen sayfalara aktarılmaktadır.
Makroları kullanmak için;
Excel dosyası açıkken;
Excel durum çubuğundaki sayfa adında sağ tıkla / Kod görüntüle
Kod alanına aşağıdaki kodları ekle
Çalıştırmak için F5e bas ya da Excel'e geç / ALT+F8e bas makroyu seç / Çalıştır.

Sub SatirlariSayfalaraAktar_v1()
 'Excel satırlarını 100'erli olarak bölüp yeni sayfalara aktarır
 'makro: Mesut Akcan
 '15 Eylül 2018
 For n = 1 To Cells.SpecialCells(xlLastCell).Row Step 100
     satirlar = Str(n) & ":" & Trim(Str(n + 99))
     Rows(satirlar).EntireRow.Copy
     Sheets.Add After:=ActiveSheet
     ActiveSheet.Paste 
     DoEvents
 Next
 Sheets(1).Activate
 End Sub

Soru 2

Bu 100'lü bölümleri farklı yeni Excel dosyası olarak kaydedebilir miyiz.

4 Mayıs 2022 Çarşamba

Excel: Aktif satır ve sütun renklendirme

Yayınlama: 19/06/2016
Güncelleme: 04/05/2022
Makro kullanarak Excelde aktif satır ve sütunu renklendirerek hücre takibi yapmak kolaylaştırılabilir.
Bu işlem için üç farklı VBA makro kodu veriyorum.
Kodları deneyip uygun olanını kullanabilirsiniz.

Makro eklemek için önce aşağıda verilen makro kodunu kopyalayın.
Excelde sayfa adı(Sayfa1, Sayfa2 ...) üzerinde sağ tıklayın
Açılan menüde Kod görüntüle tıklayın.

24 Eylül 2021 Cuma

Excel VBA ile Yazı Animasyonu


Excel VBA ile Yazı Animasyonu
Sub Animasyon()
'makro: Mesut Akcan
'23/9/2021
'mesutakcan.blogspot.com

With ActiveSheet.Shapes.Range(Array(1)).TextFrame2.ThreeD
'With ActiveSheet.Shapes.Range("yazi1").TextFrame2.ThreeD

    .Visible = msoFalse
    .BevelTopType = msoBevelAngle
    .SetPresetCamera (msoCameraPerspectiveLeft)
    .FieldOfView = 100
    .BevelTopInset = 0
    .BevelTopDepth = 0
    .RotationX = 0
    .Depth = 4.5
    .BevelBottomInset = 8
    .BevelBottomDepth = 5
    .BevelBottomType = msoBevelAngle
    For n = 0 To 8
        .BevelTopInset = n
        If n > 5 Then a = 5 Else a = n
        .BevelTopDepth = a
        bekle 2000
    Next

    For n = 0 To 360 Step 10
        .LightAngle = n
        bekle 2000
    Next
    For a = 360 To 0 Step -10
        .RotationX = a
        .RotationZ = -a
        bekle 1000
    Next
End With
End Sub

Sub bekle(t)
    For n = 1 To t: DoEvents: Next
End Sub

7 Mart 2020 Cumartesi

Excel VBA'da Regular Expressions(Düzenli İfadeler) kullanımı

Regular Expressions(Düzenli ifadeler) nedir?

Kısaca RegEx veya RegExp olarak kullanılan düzenli ifadeler günümüz modern programlama dillerinin birçoğunda bulunmaktadır.
Regex, ele alınan metindeki karakterler dizisinin kısa yoldan ve esnek bir biçimde bulunmasını ve gerekirse değiştirmesini sağlar.

RegEx hakkında ayrıltılı açıklama için şu sayfalara da bakabilirsiniz:
Perl Regular Expressionlar 1

List_of_Regular_Expressions
Wikipedi Düzenli ifade

İngilizce kaynaklar:
Regexr.com
Regular-expressions.info
Regex101.com
Rexegg.com
Regexone.com

Excel VBA'da RegEx kullanımı

Normalde Excel VBA'da RegEx ile ilgili bir özellik yoktur. Ancak Microsoft VBScript Regular Expressions referansı ile bu sağlanabilmektedir.

Excel VBA'ya bu referansı eklemek için iki yol var:

1. yol:

Excel VBA Editöründe(ALT+F11) iken menüden Tools / References ... tıklanır. Açılan pencerede listeden Microsoft VBScript Regular Expressions seçilip OK tıklanır.
Sub Test()
 ' Tools / Reference ile
 ' Microsoft VBScript Regular Expressions
 ' ekleyin
 Dim RegEx As RegExp
 Set RegEx = New RegExp

2. yol:

4 Aralık 2019 Çarşamba

Excel: Haftanın gününe göre ayın ilk günü

Belirli bir tarihdeki ayın, güne göre ilk gününü bulmak gerekli olduğu durumlar olabilir.
Excel ile formül kullanarak bu işlem yapılabilmektedir.

Örneğin:
2019 yılının 12. ayının ilk Çarşamba günü hangi gündür?

Bunu bulmak için HAFTANINGÜNÜ ve ELEMAN formüllerini kullanacağız.
=HAFTANINGÜNÜ("1.12.2019";2)
formülü ile 1/12/2019 tarihin hangi güne denk geldiğini buluyoruz
Sonuç: 7

Günleri, Pazartesiden - Pazara sıralarsak 7. sırada Pazar vardır.
Yani; 1/12/2019 tarihi Pazar günüdür

Sonuç olarak gelen 7 rakamı, verilen 1/12/2019 tarihinin Pazar günü olduğunu gösterir

HAFTANINGÜNÜ formülünde 2. parametre olarak 2 değerini verdim.
Bu 2 rakamı, günleri Pazartesi'den - Pazar'a sıralar, 1-7 arası bir sonuç döndürür.

2. parameternin alternatifleri:
HAFTANINGÜNÜ formülü ile ayın ilk günün Pazar yani 7 değerine sahip olduğunu bulduk.

16 Kasım 2019 Cumartesi

akcanSoft XLS to VCF v1.0


Excel tablosuna eklediğiniz kişi telefon rehberi bilgilerini bir çok program ve uygulama tarafından kabul edilen VCF dosya formatında çıktı almanızı sağlayan bir excel dosyası.

Dosya Excel VBA makro kodları içermektedir.
İngilizce ve Türkçe olarak kullanılabilir.

akcanSoft XLS to VCF v1.0
Excel dosyayı indir: https://github.com/akcansoft/XLS-to-VCF/raw/master/akcanSoft XLS to VCF v1.0.xlsm 36.5 Kb

28 Eylül 2019 Cumartesi

EXCEL: DÜŞEYARA ile soldan bilgi bulma

Excelde DÜŞEYARA formülü tablodaki veya satır aralığındaki öğeleri bulmamız gerektiğinde kullanılır.
En basit haliyle DÜŞEYARA kullanımı:
= DÜŞEYARA (aramak istediğiniz; aranacak tablo; tablodaki sütun numarası; 1/DOĞRU veya 0/YANLIŞ)

4. parametrede;
1/DOĞRU: yaklaşık olarak,
0/YANLIŞ: tam bir eşleşme yapar.

Örnek:
Aşağıdaki öğrenci tablosundan okul numarasına göre arama yapılıp bulunan öğrencinin bilgilerini elde edilir.

I3 hücresinde Adı soyadı bilgisini elde etmek için
=DÜŞEYARA($I$2;$C$2:$F$11;2;)
formülü kullanıldı. Formülde I2 yerine $I$2, C2:F11 yerine $C$2:$F$11 kullanıldı bu işlem, formülü kopyaladığımızda hücre adresinin değişmemesi içindi.
4. parametre boş bırakıldı. Bu, 0 değerini girmekle aynıdır. Tam eşleşme yaparak arar.
Diğer örnekler ile Baba adı ve Doğum yeri bilgileri elde edilmiştir.
=DÜŞEYARA($I$2;$C$2:$F$11;3;)=DÜŞEYARA($I$2;$C$2:$F$11;4;)
Buraya kadar güzel ancak okul no'suna göre ya da öğrenci adına göre arama yapıp sınıfı bilgisini elde etmeye çalışırsak DÜŞEYARA formülü buna izin vermiyor. Çünkü aradığımız, sütunun sağ tarafından bilgi alabiliyoruz.

Tabloda soldan bilgi elde etmek istediğimiz bir durum olursa ne yapabiliriz?
Bunun için birkaç yöntem var.
En basit kullanımı aşağıdaki gibidir.

DÜŞEYARA formülündeki ikinci parametreye tabloyu direkt olarak değilde ELEMAN ile dolaylı olarak aktarılıyor.
=DÜŞEYARA(I2;ELEMAN({1;2};D2:D11;C2:C11);2;0)
ELEMAN formülü tabloyu bellekte yeniden oluşturuyor formüldeki {1;2} ile 2 sütunlu bir tablo olacağını belirtiyor.
1. sütunu olarak D2:D11 (Adı soyadı),
2. sütunu olarak solundaki C2:C11 (No) seçiliyor.
Böylece Adı soyadı ve No'dan oluşan yeni tablo oluşuyor.

DÜŞEYARA formülü ile oluşan bu yeni tabloda arama yapıp sonuç elde ediyoruz.
Esasında yine DÜŞEYARA ile aradığımızın sağından bilgi elde etmiş oluyoruz.
Sınıfı bilgisini elde etmek için ELEMAN ile bir tablo oluşturuyoruz 2 sütunlu.
1. sütun D2:D11 (Adı soyadı)
2. sütun B2:B11 (Sınıfı)
Oluşan bu tablodan DÜŞEYARA ile Adı Soyadını arayıp Sınıfı bilgisini elde ediyoruz.
=DÜŞEYARA(I2;ELEMAN({1;2};D2:D11;B2:B11);2;0)

7 Eylül 2019 Cumartesi

Excel ile yıllık takvim

Güncelleme: 7 Eylül 2019
Excel'de hazırladığım Yıllık takvimler.
Buradaki Excel dosyalar istediğiniz herhangi bir yıla göre takvim hazırlar.

akcanSoft Yıllık Takvim:

İstediğiniz yılın yıllık takvimini hazırlar. Geçmiş ya da gelecek yıl, fark etmez
Yıllık Takvim İndir 64.5 KB. Excel dosya

akcanSoft Yıllık Takvim 2:

Üstteki gibi istediğiniz yılın yıllık takvimini hazırlar. Kurban ve ramazan bayramlarını da gösterir.
Yıllık Takvim 2 İndir 62.5 KB. Excel dosya


akcanSoft Çalışma Takvimi:

Öğretmen ve öğrenciler içindir. Ağustos ayından başlayıp sonraki yılın Temmuz ayına kadar yıllık çalışma takvimi hazırlar. İstediğiniz öğretim yılına göre hazırlar
Çalışma Takvimi İndir 63 KB. Excel dosya

akcanSoft Çalışma Takvimi 3:

Excel 2016 ile hazırlandı.
Öğretmen ve öğrenciler içindir.
Eylül ayından başlayıp sonraki yılın Temmuz ayına kadar yıllık çalışma takvimi hazırlar.
Geçmişte ya da gelecekteki bir yıla göre istediğiniz öğretim yılına göre anında hazırlar.
Kurban ve Ramazan bayramının 1. gününü hesaplar. Not: Bayram günü 1 günlük sapma yapabilir
Çalışma Takvimi 3 İndir 30.59 KB.

8 Mart 2017 Çarşamba

Excel: Özel Otomatik Liste Oluşturma

 
Excelde hazır otomatik listeler var. Örneğin Günler.
Hücrenin birine Pazartesi yazıp yana ya da aşağı doğru doldurduğunuzda haftanın günleri sıralanacaktır.

Günler listesi gibi kendimiz de otomatik özel listeler oluşturabiliriz. Bu videoda bu işlemin nasıl yapıldığı açıklanmıştır.

2 Aralık 2015 Çarşamba

Excel: Sayıları virgülden hizalama

Küsuratlı ve tam sayılardan oluşan karışık listeniz varsa bunları virgülden(küsurattan) hizalı olarak hücre içinde yaslayabilirsiniz. Böylece sayıları okumak ve karşılaştırmak daha kolay olacaktır.
  • Hizalanacak hücreleri seçin
  • CTRL+1 (Hücre Özellikleri) / Sayı / İsteğe Uyarlanmış yolunu takip edin
  • Tür kısmına ,???? yazın. Sistem özelliklerinde küsuru ayırmak için virgül yerine .(nokta) kullanılıyorsa .???? kullanın.
  • Tamam tıklayın.
 

29 Ağustos 2014 Cuma

Excel: Metni sütunlara dönüştür

Bazen bir hücrede bulunan kelimeleri ayırıp ayrı ayrı hücrelere yerleştirme ihtiyacı olmaktadır.
Örneğin elimizde uzun bir ad soyad listesi var ancak ad ve soyad tek hücrede yazılmış.

Bize lazım olan bunların ayrı ayrı hücrelere yazılmasıydı.

Excel böyle bir soruna çözüm olarak metni sütunlara dönüştüren bir özellik eklemiş.

Nasıl Kullanılır?
  1. Listenin tamamını seçin
  2. Veri menüsünde Metni sütunlara dönüştür tıklayın
  3. Metni Sütunlara Çevirme Sihirbazı açılacak. 1. Adımda Sınırlandırılmış seçeneği seçilecek.
  4. İleri tıklandıktan sonra 2. adımda Ayırıcılardan "boşluk" seçilecek.
  5. İleri tıklandıktan sonra 3. adımda Hedef olarak C1 hücresi seçilmiştir. Seçilen hücreden başlanarak liste sütunlara dağıtılacaktır. Farklı bir hücre de seçilebilir.

  6. Son adımda "Son" tıklanır.

5 Nisan 2014 Cumartesi

EXCEL VBA: Belirtilen aralıktaki çift ya da tek sayıların toplamı

Excelde kullanabileceğiniz özel bir fonksiyon
=SayiTopla(hücreler,tip)
Bu formül belirtilen hücrelerdeki çift ya da tek sayıların toplamını verir

hücreler olarak: "A1:E4" gibi çok sayıda hücre.
tip olarak:
Tek sayı için: 1
Çift Sayı için: 0

Örnek: =SayiTopla("A1:E5";1)
"A1:E5" aralığındaki tek sayıların toplamını verir

Kodları eklemek için:
Excelde ALT+F11 e basın.
Menüden Insert / Module tıklayın.
Aşağıdaki kodları ekleyin
Function SayiTopla(hucreler As Range, tip As Integer)
' tip:
' 0: Çift sayi
' 1: Tek sayi
Dim arrayA As Variant
Dim i As Integer, j As Integer, artan As Integer
Dim sayi As Variant
arrayA = hucreler.Value

For i = 1 To hucreler.Rows.Count
 For j = 1 To hucreler.Columns.Count
  sayi = arrayA(i, j)
  artan = sayi Mod 2
  If artan = tip Then
   SayiTopla = SayiTopla + sayi
  End If
 Next
Next
End Function