Birim İçeren Metinleri Toplayan Fonksiyon

Cevapla
Seyyar Diyari
Mesajlar: 9
Kayıt: 23 Eki 2020, 15:14
İşletim Sisteminiz: Ubuntu & Windows
LibreOffice Sürümü: 7.1.5.2

Birim İçeren Metinleri Toplayan Fonksiyon

Mesaj gönderen Seyyar Diyari »

Bazı Servis Sağlayıcılar, "Kullanım Detayları" verirken Hesap Tablosunun açabileceği formatta döküm sunuyorlar. Fakat bu dökümanlarda detaylar sonuna KB, MB, GB gibi birimler eklenerek geliyorlar. Ondalık ayracı olarak Virgül (,) yerine Nokta (.) yazılmış olabiliyor.

"Kullanım Detayları" böyle olan bir dökümanda sonunda veri alış-verişi boyutu olan detayların GB cinsinden toplamını almak için bir LibreOffice Basic Makrosu kodladım :idea: . Topla() fonksiyonunda olduğu gibi toplanacak aralığı girebiliyor.

:arrow: Aynı işlemi Python ya da JS makrolarla daha hızlı yapmak mümkün müdür ?

Kod: Tümünü seç

REM  **** Kullanım Detaylarını Toplar  ****
Function NetTopla(range) As STRING
 Dim row, col As Integer
 Dim result, cell, newcell As STRING
 result = ""
 For row = LBound(range, 1) To UBound(range, 1)
 	For col = LBound(range, 2) To UBound(range, 2)
		cell = range(row, col)
		newcell = ""
 		For NoktaVirgul = LEN(cell) to 1 STEP -1
 			This = MID(cell, NoktaVirgul, 1)
	 		If This = "." Then 
 				newcell = "," + newcell
 			Else 
 				newcell = This + newcell
	 		End If 		
 		Next
 		cell = newcell
		Birim = RIGHT(cell, 2)
		Select Case Birim
			Case " B"
				Bytes = CLng(LEFT(cell, LEN(cell) - 2))
				KiloBytes = Bytes / 1024
			Case "KB"
				KiloBytes = CLng(LEFT(cell, LEN(cell) - 3))
			Case "MB"
				MegaBytes = CLng(LEFT(cell, LEN(cell) - 3))
				KiloBytes = 1024 * MegaBytes
			Case "GB"
				GigaBytes = CLng(LEFT(cell, LEN(cell) - 3))
				KiloBytes = 1024 * 1024 * GigaBytes
			Case Else
		End Select
 		result = CStr(CLng(KiloBytes) + CLng(result))
 	Next
 Next
 NetTopla = CStr(CLng(result) / (1024 * 1024) & " GB")
End Function
Herkese Sağlıklı Günler :arrow:
Cevapla