VBA'da Menzili ABS'ye Geçme Aralığı


1

Bunun gibi görünen bir işlevi gerçekleştirmek istiyorum.

Selection.FormulaArray = "=GEOMEAN(ABS((C646:E646)))"

Menzilim değişmeye devam ettiğinden, menzili buna benzeyen bir değişken olarak geçirmek istiyorum

Range1 = Range("C646", Range("C646").Offset(0, 2)).Address(False, False)
Selection.FormulaArray = "=GEOMEAN(ABS(Range1))"

Hatayı # AD olarak mı alıyorum?

Ama eğer bu şekilde geçirirsem

x = Range("C646").Address(False, False)    
Y = Range("C646").Offset(0, 2).Address(False, False)    
Selection.FormulaArray = "=GEOMEAN(ABS((x:y)))"

Hatayı # DEĞER olarak alıyorum!

Birisi yardım edebilir mi?

Yanıtlar:


1

Satırı değiştir Selection.FormulaArray = "=GEOMEAN(ABS(Range1))" kodunuzda aşağıdakilerle:

Selection.FormulaArray = "=GEOMEAN(ABS(" & Range1 & "))"

Bunu test etmedim, ama bu doğru görünüyor. (Not: adlandırma sözleşmeniz bu yana kafa karıştırıcı Range1 gerçekten bir aralıktan ziyade bir dizedir.


Teşekkür ettiğiniz gibi kullanmaya çalıştım. Tek aralık için iyi çıktı. Kopyalamaya çalıştığımda, tüm aralıklar için bana aynı değeri veriyor. Kodum şöyle görünüyor Range1 = Range ("C1467", Range ("C1467"). Offset (0, 2)). Adres (Yanlış, Yanlış) Aralığı ("M1467"). Seçimi Seçin. FormulaArray = "= GEOMEAN ( ABS ("& Range; & amp;;")) "Selection.AutoFill Hedef: = Range (" M1467: M1667 "), Tür: = xlFillDefault Range (" M1467: M1667 "). Bu yüzden bu formüle sahip her hücreye gidip CTRL + ÜST KRKT + ENTER tuşlarına basmam ve sonra doğru bir değer elde etmem gerekiyor. Formül dizisi işe görünmüyor !!
NK1

0

ABS sadece bir aralık değil bir sayının mutlak değerini döndürür. Belki sen istersin AVEDEV veri noktalarının mutlak sapma ortalamasını ortalamasından döndüren işlev.

GEOMEAN için ya koddaki aralığı her değere ABS uygulayarak ve işleve geçmek için yeni bir Aralık oluşturmalısınız.

Veya buna göre StackOverflow cevap alternatif bir formül kullanın:

EXP(AVERAGE(LN(A1:A171)))

Günlük değerlerinin ortalamasını hesaplamaya çalışıyorum (dB) Bu yüzden Geometrik ortalamayı kullanmam gerekiyor. GEOMEAN negatif sayılar için çalışmadığından, sayıları ABSOLUTE değerine dönüştürmeye ve ardından GEOMEAN işlevini uygulamaya çalışıyorum. Yakalama, Selection.FormulaArray = "= GEOMEAN (ABS ((C646: E646)))" formülüdür, burada belirtilen aralık değerleri için mükemmel çalışır. Ancak n sayı aralığım var ve bu formülü n sayı aralığını hesaplamak için bir döngüye koymak istiyorum. Hangisi olmuyor!
NK1

@ user216576 geomean ile ilgili daha fazla bilgi ekledi
Brad Patton

Ben saf bir excel VBA kullanıcısı olduğumu belirtmek isterim. Yani bu sorunun üstesinden gelmek için bir çalışma çalışıyorum. Bu, her hücre değerini mutlak değere dönüştürür ve sonra GEOMEAN değerini hesaplar. Bazı aralıklarda negatif değerlere sahip olduğum için, başlangıç ​​hücre içeriğine göre negatif işaretini uyguluyorum. Bu yöntem, bazılarının bana doğrudan bir çözümde yardımcı olabileceği konusunda oldukça uzun bir umut.
NK1

Bu akşam bu konuda daha fazla zaman geçirdim, sonra bir VB işlevi yaratmaya çalışmalıyım. Muhtemelen tüm değerlere ABS uygulayan yeni bir sütun oluşturmalı ve ardından pozitif sayıların GEOMEAN'ını almalısınız. Üzgünüm, daha fazla yardım edemedim.
Brad Patton
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.