Excel VBA'da basit matematik nasıl yapılır


-6

60'dan büyük herhangi bir hücrede bir değere sahibim. Amacım için, değer 60'tan küçük olana kadar 60'ı bu değerlerden çıkarmam gerekiyor. Örneğin, 1000 değerinde bir hücreye sahip olduğumu söyleyin. Kullanmak istediğim değer 40 olur çünkü 40, 60'ı tekrar tekrar çıkardıktan sonra 60'tan daha düşük olan ilk değerdir.

60'ı tekrar tekrar çıkaracak ve daha sonra bu değeri yerine getirdiği için son değeri (40) durduracak ve görüntüleyecek bir VBA çözümü öngörüyorum.

Veri aralığı büyüktür ve aralığın herhangi bir yerinde 60'ın üzerindeki değerler oluşabilir. Elektronik tabloyu açtığımda bunun otomatik olarak yapılmasını istiyorum, böylece 60'ın üzerindeki değerlere başvurabilecek tüm formüller kalanları kullanır.


1
1) Formülünüzü sürüklerseniz hücrelerin hiçbiri değil, ilk olan 1000 değerinizi ifade eder; daha fazla veri girilmelidir veya referansı $ s ile tutturmanız gerekir. 2) VBA'nın menzili sürüklemek yerine formülle doldurmasını mı istiyorsunuz? VBA kodunu yazmak, el ile sürüklemekten daha uzun sürer. Çok geniş bir aralıkta bile, bu formül hesaplamak için fazla zaman gerektirmeyecek ve VBA'da da aynı olacaktır. Sadece hesaplama sonucunu doldurmak için mi arıyorsunuz? Bunu, sonuç hücresine bir referansı sürükleyerek yapabilirsiniz. Neyi başarmak istediğinizi açıklayabilir misiniz?
fixer1234

HI, Cevabınız için teşekkürler Evet a) Sadece hesaplama sonucunun herhangi bir hücrede bir excel sayfasında görüntülenmesini istiyorum. b) Çalışma kitabını açtığımda hesaplamanın otomatik olmasını istiyorum. Bu durumda, excel sayfasında 1000 olan ve 1000'den büyük olan herhangi bir hücrede bir değere sahibim, değer 60'dan küçük olana kadar 60'ı 1000'den çıkarmam gerekiyor. Bir hesap makinesi kullanırken, çıkardıktan sonra istediğim değer 40, çünkü 40, 60'tan küçük olan ilk değerdir. Ayrıca, bu koşulu yerine getirdiği için hesaplamanın durmasını ve Son değeri 40'ı görüntülemesini istiyorum.
EXCEL LOVER

Yanıtlar:


0

İstediğini yapmak için VBA'ya ihtiyacınız yok. Kalan 60'dan küçük olana kadar 60'ı tekrar tekrar çıkarmak istiyorsunuz. Bunu yapmak için VBA kodu yazabilirsiniz, ancak bunu bir formülle bir adımda yapabilirsiniz:

    =MOD(ED1,60)

1000'i 60'a bölerseniz, 16.666 elde edersiniz ... Bu, 60'tan daha az bir şey elde etmek için 60 on altı kez çıkarmanız gerektiği anlamına gelir. MOD işlevi, geri kalanı bölmeden sonra üretir (bu durumda, 40) bu çıkarmalara eşdeğerdir.

Bunu iki şekilde kullanabilirsiniz. Birincisi, bu MOD ifadesini (eşittir işareti olmadan) basit hücre yerine, 60'ı aşabilecek veri hücrelerine referans olarak kullanmaktır. Bu, çevrilen değeri kullanacaktır.

Her bir hücreye başvuruda bulunan sayısız formüle sahipseniz ve aynı değerlerin tekrarlanan yeniden hesaplamalarının hepsinin ek yüküne sahip olmak istemiyorsanız, yukarıdaki formülü içeren yinelenen bir veri aralığı olan bir çevrilmiş değerler kümesi oluşturun. Bu, verileri bir kez çevirir ve ardından tüm formülleriniz ham veriler yerine bu numaralara başvurabilir. Bu hesaplamaların ek yükünün yenilenmesini istemiyorsanız, bir kopyasını alın | özel yapıştırma | değerler. Sonuçları ham verinin üzerine yapıştırabilir ve sonra ara hesaplamaları silebilirsiniz.


Tam olarak aynı şeyi yaptım, ancak değer 40 yerine 2400 olarak belirdi. = IF (ED1> 60, ED1-60, ED1) dışında formül, vbas, eklentiler vb. Kullanarak başka bir geçici çözüm var mı? bu daha büyük hesaplamaların yapılmasında faydalı olacaktır.
EXCEL LOVER

Benim kötü, yeterince kahve değil. MOD fonksiyonu, tek başına gerçek kalanı üretir, sonunda * 60'a ihtiyacınız yoktur. Formülü ve tartışmayı düzelttim. Yorumunun geri kalanını anladığımdan emin değilim. Bu düzeltme ihtiyacınız olanı yapar mı yoksa farklı bir şey mi arıyorsunuz? (Daha büyük hesaplamalarla ne demek istediğinizi tam olarak bilmiyorsunuz; MOD, art arda gelen çıkarmalar ile çözmez, bölünerek yapar, sonra tam sayıyı keser, ne olursa olsun, sonra kesirli geri kalanı tam sayıya dönüştürür.)
fixer1234

Merhaba, Gözlerimi açıp yüzüme kocaman bir gülümseme koyduğunuz için çok teşekkür ederim. Bu tam olarak peşinde olduğum şeydi. ::::::::::: !!!!!!!!!!! ::::::::::: MUHTELİF ÇÖZÜM ::::::: !!!!!!!! :::::::::
EXCEL LOVER

0

Harika haberlerim var! ED1'deki değer sabit olduğundan, formül her zaman değerle sonuçlanır:

960

Diyelim ki uzun menzil A1: Z100

İşte VBA tabanlı bir çözüm:

Private Sub Workbook_Open()
    Sheets("Sheet1").Range("A1:Z100").Value = 960
End Sub

Bu bir çalışma kitabı olay makrosu.

Çalışma kitabı kodu olduğu için kurulumu ve kullanımı çok kolaydır:

  1. Menü Çubuğundaki Dosyanın solundaki küçük Excel simgesini sağ tıklayın
  2. Kod Görüntüle'yi seçin - bu bir VBE penceresi getirir
  3. öğeleri yapıştırın ve VBE penceresini kapatın

Çalışma kitabını kaydederseniz, makro onunla birlikte kaydedilir. Daha sonra 2003'ten sonra bir Excel sürümü kullanıyorsanız, dosyayı .xlsx yerine .xlsm olarak kaydetmeniz gerekir.

Makroyu kaldırmak için:

  1. VBE pencerelerini yukarıdaki gibi açın
  2. kodu temizle
  3. VBE penceresini kapatın

Genel olarak makrolar hakkında daha fazla bilgi için bkz.

http://www.mvps.org/dmcritchie/excel/getstarted.htm

ve

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Etkinlik Makroları hakkında daha fazla bilgi edinmek için (çalışma kitabı kodu) bkz.

http://www.mvps.org/dmcritchie/excel/event.htm

Bunun çalışması için makrolar etkinleştirilmelidir!


Merhaba, cevap için teşekkürler, aslında aradığım değer 40, çünkü değer 60'tan 1000 olana kadar 60'ı çıkarmaya başladığımda değer "40" olur ve ayrıca bu değerin excel sayfasındaki herhangi bir hücrede görüntülenmesini istiyorum hesaplama yapılır.
EXCEL LOVER

@EXCELLOVER Ardından, gereksinimlerinizi karşılayacak şekilde posta kodumu değiştirin!
Gary'nin Öğrencisi

Pekala, Gary'nin Öğrencisi Artık ihtiyaç olmayacak. Çabalarınız için teşekkürler, bunu takdir ediyorum
EXCEL LOVER
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.