ضرب یک سلول در یک ستون

نویسنده Shahabsoltani1, 23 می 2022, 22:08

« قبلی - بعدی »

Shahabsoltani1

با سلام
خداقوت همگی
فرض کنید در سلول a1 عددی داریم (مثلا ۱۰)
در ستون B1 تا B5 هم یکسری عدد داریم
حالا میخوایم با استفاده از حلقه کدی بنویسم که
مقدار A1 رو در مقادیر B1 تا B5 ضرب کنه
و نتیجه رو در ستون C1 تا C5 بنویسه
سپاس از همگی
🌹

For each mycell in range  ( "B1:B5")
Dim mg as integer
Mg= range("a1")
Dim sg as range
Set sg = range("C1:C5")
sg.cells(0,3)=Mg*mycell
Next mycell


اینم نوشتم ولی درست جواب نمیده

فرشید میدانی

😀 اشتباهات شما در این کد زیاد بود اما ... بسیار کار خوبی کردید که کد را نوشتید و از کد نویسی نترسیدید.
کد صحیح این است:

Sub test()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("C1:C5")

For Each mycell In Range("B1:B5")
    i = i + 1
    sg.Cells(i) = mg * mycell.Value
Next mycell

End Sub

یکی از مهمترین اشتباهات شما تعریف متغیر در داخل حلقه بود و این یعنی اینکه هر بار این متغیر از ابتدا تعریف و مقدار دهی می شود.


اما کد بهینه تر این است:

Sub test_2()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("B1:B5")

For Each mycell In sg
    mycell.Offset(0, 1).Value = mg * mycell.Value
Next mycell

End Sub


در تابستان دوره آنلاین برنامه نویسی اکسل را اگر مایل بودید شرکت کنید.
⭐ اگر پاسخ خود را یافتید:

۱) در پاسخ گویی به سوالات انجمن اکسل فرساران مشارکت کنید.
۲)  دوره‌های[iurl="[url="https://www.farsaran.com/excel"]https://www.farsaran.com/excel[/url]"] اکسل فرساران[/iurl] را به همکاران سازمان خود معرفی کنید.
۳)  صفحه [iurl="[url="https://www.instagram.com/farsaran_excel/"]https://www.instagram.com/farsaran_excel/[/url]"]اینستاگرام farsaran_excel[/iurl] را 🧡 کنید.

Shahabsoltani1

نقل قول از: فرشید میدانی در 24 می 2022, 08:25😀 اشتباهات شما در این کد زیاد بود اما ... بسیار کار خوبی کردید که کد را نوشتید و از کد نویسی نترسیدید.
کد صحیح این است:

Sub test()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("C1:C5")

For Each mycell In Range("B1:B5")
    i = i + 1
    sg.Cells(i) = mg * mycell.Value
Next mycell

End Sub

یکی از مهمترین اشتباهات شما تعریف متغیر در داخل حلقه بود و این یعنی اینکه هر بار این متغیر از ابتدا تعریف و مقدار دهی می شود.


اما کد بهینه تر این است:

Sub test_2()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("B1:B5")

For Each mycell In sg
    mycell.Offset(0, 1).Value = mg * mycell.Value
Next mycell

End Sub


در تابستان دوره آنلاین برنامه نویسی اکسل را اگر مایل بودید شرکت کنید.




سلام استاد
روز بخیر
سپاس بی نهایت از لطف شما
ممنون

Shahabsoltani1

نقل قول از: فرشید میدانی در 24 می 2022, 08:25😀 اشتباهات شما در این کد زیاد بود اما ... بسیار کار خوبی کردید که کد را نوشتید و از کد نویسی نترسیدید.
کد صحیح این است:

Sub test()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("C1:C5")

For Each mycell In Range("B1:B5")
    i = i + 1
    sg.Cells(i) = mg * mycell.Value
Next mycell

End Sub

یکی از مهمترین اشتباهات شما تعریف متغیر در داخل حلقه بود و این یعنی اینکه هر بار این متغیر از ابتدا تعریف و مقدار دهی می شود.


اما کد بهینه تر این است:

Sub test_2()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("B1:B5")

For Each mycell In sg
    mycell.Offset(0, 1).Value = mg * mycell.Value
Next mycell

End Sub


در تابستان دوره آنلاین برنامه نویسی اکسل را اگر مایل بودید شرکت کنید.


ضمن عرض تشکر مجدد
من اینجوری یکم ویراشش کردم به منظور این که اگر  range("A1") برابر با هریک از مقادیر Range("B1:B5") بود رو صفر کنه

Sub test()

Dim mg As Integer
Dim sg As Range
Dim df As Range

mg = Range("a1").Value
Set sg = Range("C1:C5")
Set df = Range("B1:B5")

For Each mycell In df
   j = j + 1
   If df.Cells(j) = mg Then
      i = i + 1
       sg.Cells(i) = 0
   Else:
      i = i + 1
       sg.Cells(i) = mg * mycell.Value
   End If
Next mycell

End Sub

Shahabsoltani1

نقل قول از: فرشید میدانی در 24 می 2022, 08:25😀 اشتباهات شما در این کد زیاد بود اما ... بسیار کار خوبی کردید که کد را نوشتید و از کد نویسی نترسیدید.
کد صحیح این است:

Sub test()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("C1:C5")

For Each mycell In Range("B1:B5")
    i = i + 1
    sg.Cells(i) = mg * mycell.Value
Next mycell

End Sub

یکی از مهمترین اشتباهات شما تعریف متغیر در داخل حلقه بود و این یعنی اینکه هر بار این متغیر از ابتدا تعریف و مقدار دهی می شود.


اما کد بهینه تر این است:

Sub test_2()

Dim mg As Integer
Dim sg As Range

mg = Range("a1").Value
Set sg = Range("B1:B5")

For Each mycell In sg
    mycell.Offset(0, 1).Value = mg * mycell.Value
Next mycell

End Sub


در تابستان دوره آنلاین برنامه نویسی اکسل را اگر مایل بودید شرکت کنید.


جناب میدانی عزیز
یک سوال دارم پیرو همین بحث
فرض بفرمایید ستونهای دارای مقادیر به شرح زیر هستند:
          D             C                B              A
1    حسین         حسن           علی           10
2     10              3                7
3      6               8                5
4      6               4                1

و RANGE("D1") هم مقدار ۱۰ دارد

حالا میخواهیم وقتی در RANGE("A5") اسم علی را وارد میکنیم مقدار D1 در کل ستون C که حاوی مقادیر هست ضرب شود و نتیجه در RANGE("C6:C8")  درج شود
یا هر اسم دیگری در A5 وارد شد ستون متناظر با ان در D1 ضرب شود و در همان محدود نمایش داده شود

البته مقداری سربه سرش گذاشتم ولی نشد
مثلا  offset  و Match  رو ترکیب کردم
نمیدونم کجای کار میلنگید که نشد

عذر خواهی میکنم بدین شکل نوشتم چون با گوشی داشتم مینوشتم دسترسی به اکسل نداشتم که طراحی کنم سوالم رو



سپاس از شما