• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Çözüldü Sin(x)° değiştir x,xxx

  • Konbuyu başlatan Konbuyu başlatan k0081
  • Başlangıç tarihi Başlangıç tarihi
Katılım
17 Haziran 2008
Mesajlar
1,874
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Merhaba arkadaşlar;

((1,25+1,75)/2)*1*2+(1+(1/SİN(63)))*45,66 bu şekilde bir formülüm var. Excelin default olarak açı cinsi radyan.

yapmak istediğim ; SİN(63) değerini derece olarak hesaplatıp yazdırmak.- değiştirmek

yani istenen sonuç :

((1,25+1,75)/2)*1*2+(1+(1/0,891006524))*45,66

bunu bir fonksiyon kullanarak , yapsakta sonuçta tetikleme replace komutu ile olmalıdır. ( yazmış olduğum vba kodunu bozmamak için... )


Yardımcı arkadaşa şimdiden teşekkürler...
 
Son düzenleme:
Merhaba,
Kullandığınız formülde SİN(63) ifadesini SİN(RADYAN(63)) şeklinde değiştiremez misiniz?
 
Sözkonusu ifade eğer A1 hücresindeyse, aşağıdaki "REGEXP" kodu işinizi görecektir;

C#:
Sub Test()
    'Haluk - 20/01/2024
    Dim objRegEx As Object, RetVal As Object, temp As String, myStr As String
  
    Set objRegEx = CreateObject("VBscript.RegExp")
    objRegEx.Global = True
    objRegEx.Pattern = "\SİN\((.+)\)\)\)"
  
    myStr = Range("A1").Text
  
    If objRegEx.Test(myStr) Then
        Set RetVal = objRegEx.Execute(myStr)
      
        myAngle = RetVal(0).submatches(0)
      
        temp = Sin(myAngle * Application.Pi / 180)
      
        objRegEx.Pattern = "\SİN\(" & myAngle & "\)"
      
        myStr = objRegEx.Replace(myStr, temp)
        
        Range("A1") = myStr
        myStr = Empty
    End If
      
    Set objRegEx = Nothing
End Sub

.
 
Son düzenleme:
@ÖmerBey

Hayır. değiştiremem. Formül uzar., uzamasından ziyade, formülü okuyan anlamayabilir...
 
@Haluk

göndermiş olduğunuz koda bakacağım., ancak bu kodu şu altta vermiş olduğum satıra eklememiz gerekiyor...

C#:
formul = Replace(Replace(Replace(Replace(Replace(Replace(Split(Mid(metin, InStr(1, metin, ":") + 1), "=")(0), "m³", ""), "m²", ""), "m", ""), "ort", ""), " ", ""), ",", ".")
 
Bahsettiğiniz "formul" degiskeninden elde edilen sonuc, sizin ilk mesajınızdaki ifadeyse eğer, o zaman benim kodun başında;


Kod:
myStr = Range("A1").Text


yerine;

Kod:
myStr = formul


yazarsınız, sonucu da yine A1 hücresine yazdırır veya ne yapmak istiyorsanız onu yaparsınız. Örneğin, bu işlemin sonucu;

Kod:
        MsgBox Evaluate(Replace(myStr, ",", "."))

.
 
Son düzenleme:
Anladım söylediğinizi de, benim kodlarda bir düzenleme yapmam gerekiyor.

* bu desen ; objRegEx.Pattern = "\SİN\((.+)\)\)\)"

İlk mesaja göre oluyor. çalışıyor. Ancak bazen açıklamada yazabiliyorum . Bu durumda deseni nasıl değiştirmeliyim?

açıklama dediğim ; Temel betonu : ((1,25+1,75)/2)*1*2+(1+(1/SİN(63)))*45,66 = gibi
 
Dediğiniz ifadeyi;

Kod:
Temel betonu : ((1,25+1,75)/2)*1*2+(1+(1/SİN(63)))*45,66 =


olduğu gibi, A1 hücresine koydum ve kodu çalıştırdım. Beklendiği gibi, A1 hücresine aşağıdakini yazdı;

Kod:
Temel betonu : ((1,25+1,75)/2)*1*2+(1+(1/0,891006524188368))*45,66 =


Yani, bende bir sorun olmadı...

.
 
Tekrar deniyorum
*************************

Sin küçük yazmışım. o yüzden olmamış. Tamamdır çalışıyor.

Çok teşekkür ediyorum. Hocam. Şimdi ekleme kısmına geçebilirim.
***********************************

Ekledim. Çok Teşekkürler Hocam tekrardan @Haluk
 
Son düzenleme:
Sin küçük yazmışım. o yüzden olmamış. Tamamdır çalışıyor.


Küçük/Büyük harf problemini halletmek için, aşağıdaki kırmızı ile belirttiğim flag'i kullanabilirsiniz....

Rich (BB code):
objRegEx.Global = True
objRegEx.Pattern = "\SİN\((.+)\)\)\)"
objRegEx.IgnoreCase = True

.
 
Kod içinden değiştirmiştim bende. Tamam bunu kullanayım. Teşekkür ederim hocam.
 
Geri
Üst