نوشتن فرمول در یک سلول با vba

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • master

    • 2010/07/18
    • 118

    [حل شده] نوشتن فرمول در یک سلول با vba

    سلام
    من مخواستم توی یک سلول فرمول بنوسیم
    کدی که با ماکرو ریکورد کردم این بود:
    کد:
    "=SUM(R[-2]C[6]:R[-1]C[6])"
    مشکلی که من دارم این هست که میخوام قسمت اول فرمول فوق ثابت باشه مثلا سلول g4 باشه(یعنی R[-2]C[6] بشه g4)
    چطوری میشه این فرمول رو عوپض کرد که اینجوری بشه؟
    ضمنا میشه به جای -2 از یه متغییر که عدد مورد نظر داخلش هست استفاده کرد؟
    مورد استفاده هم این هست که قراره انتهای یک ستون جمع اون ستون نوشته بشه با توجه به اینکه انتهای ستون مشخص نیست(هر دفعه عوض میشه) من کد نوشتم که انتهای اون ستون مشخص بشه و داخل با استفاده از sum جمع اون ستون نوشته بشه
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    نوشته اصلی توسط master
    سلام
    من مخواستم توی یک سلول فرمول بنوسیم
    کدی که با ماکرو ریکورد کردم این بود:
    کد:
    "=SUM(R[-2]C[6]:R[-1]C[6])"
    مشکلی که من دارم این هست که میخوام قسمت اول فرمول فوق ثابت باشه مثلا سلول g4 باشه(یعنی R[-2]C[6] بشه g4)
    چطوری میشه این فرمول رو عوپض کرد که اینجوری بشه؟
    ضمنا میشه به جای -2 از یه متغییر که عدد مورد نظر داخلش هست استفاده کرد؟
    مورد استفاده هم این هست که قراره انتهای یک ستون جمع اون ستون نوشته بشه با توجه به اینکه انتهای ستون مشخص نیست(هر دفعه عوض میشه) من کد نوشتم که انتهای اون ستون مشخص بشه و داخل با استفاده از sum جمع اون ستون نوشته بشه

    سلام دوست عزیز
    برای چیزی که شما میخواین دو سه روش وجود داره. بهترین روش بستگی به کدهاتون داره
    یک روش اینه که شما فرمول رو اینطوری بنویسید:
    کد:
    ActiveCell.FormulaR1C1 = "=SUM(R4C7:R[-1]C[6])"
    R4C7 یعنی G4
    روش دیگه اینه که ساختار فرمول رو عوض کنید. به این صورت:
    کد:
    ActiveCell.Formula = "=SUM(G4:G10)"
    برای سوال دوم هم باید بگم که بله میشه خیلی هم راحته
    مثلا اینطوری:
    کد:
    i=1
    ActiveCell.FormulaR1C1 = "=SUM(R["&i&"]C[6]:R[-1]C[6])"

    کامنت

    • master

      • 2010/07/18
      • 118

      #3
      ممنون لطف کردید همون روش اول کار رو راه انداخت
      روش دوم چون انتهای ستون نامشخص هست به کارم نمیاد

      اما روش سوم نمیدونم چرا خطا میده و قرمز میشه!!! خودم توی نت خوندم همینجوری گفته بودن باید کار کنه اما برا من جواب نمیده
      البته اینجا اگه جواب هم بده روش اول بهتر هست اما میخوام بدونم چرا خطا میده!!!!
      کد اصلی من این هست که خطا میده
      کد:
      ActiveCell.FormulaR1C1 = _
              "=""تعداد ""&R[-1]C&"" فقره چک جمعا به مبلغ ""&TEXT(SUM(R["&zz&"]C[6]:R[-1]C[6]),""#,#"")&"" ریال"""
      ضمنا میشه یه کوچولو تفاوت بین
      R[1]C[6]

      و


      R1C6


      رو بگید؟(البته خودم یه چیزایی متوجه شدم ولی میخوام ببینم درست فکر میکنم یا نه!)
      با توجه به چیزی که من متوجه شدم توی حالت اول میشه عدد منفی داد ولی توی حالت دوم نمیشه درسته؟
      باتشکر

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط master
        ممنون لطف کردید همون روش اول کار رو راه انداخت
        روش دوم چون انتهای ستون نامشخص هست به کارم نمیاد

        اما روش سوم نمیدونم چرا خطا میده و قرمز میشه!!! خودم توی نت خوندم همینجوری گفته بودن باید کار کنه اما برا من جواب نمیده
        البته اینجا اگه جواب هم بده روش اول بهتر هست اما میخوام بدونم چرا خطا میده!!!!
        کد اصلی من این هست که خطا میده
        کد:
        ActiveCell.FormulaR1C1 = _
                "=""تعداد ""&R[-1]C&"" فقره چک جمعا به مبلغ ""&TEXT(SUM(R["&zz&"]C[6]:R[-1]C[6]),""#,#"")&"" ریال"""
        ضمنا میشه یه کوچولو تفاوت بین
        R[1]C[6]

        و


        R1C6


        رو بگید؟(البته خودم یه چیزایی متوجه شدم ولی میخوام ببینم درست فکر میکنم یا نه!)
        با توجه به چیزی که من متوجه شدم توی حالت اول میشه عدد منفی داد ولی توی حالت دوم نمیشه درسته؟
        باتشکر


        با توجه به چیزی که من میبینم علت خطای شما اینه که کارکتر فارسی استفاده کردین داخل vba در حالی که مجاز نیستین


        در مورد تفاوت اون دو مورد عرض کنم که حالتی که [] داره یعنی نسبی و حالتی که عدد خالی هست ینی مطلق
        برای اینکه واضحتر بگم یک مثال میزنم
        اگر شما در سلول A1 قرار داشته باشید سلول C5 نسبت به سلول مرجع چهار ردیف پایینتر و دو ستون جلوتر است یعنی R[4]C[2]
        در حالی که اگه بخواین بگین $C$5 یعنی سطر پنجم و ستون سوم R5C3


        کامنت

        چند لحظه..