حل یک مشکل

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • reza_1001

    • 2013/10/04
    • 86

    حل یک مشکل

    با سلام خدمت دوستان
    بنده به مشکلی برخوردم در vba و هرچه تلاش کردم نتونستم حلش کنم حالا خواستار کمک شما دوستان هستم.
    مشکل بنده اینه که 2 تا ستون دارم یکی ستون A (عدد) و دیگری ستون B (متن)
    ستون اعداد یک سری اعداد هستند که 30تایی هستند یعنی از 1تا30 از 30 تا 60 الی....
    حالا میخوام زمانی که در 30 تای اول قبل از اولین متن در ستون B ستون c مثلا با عدد1 پر بشه و بعد از اولین متن ستون B چیزی نوشته نشه
    وهمچنین در 30 تا اول بعد از آخرین متن در ستون B تا عدد 30 در ستون c مثلا با عدد 2 پر بشه .
    ودر بقیه اعداد از 30 تا 60 الی .... همینجوری عمل کنه .
    فایل رو ضمیمه کرده ام .
    البته یه نکته بگم که اعدادی که در fuction برای a تعریف کردم همیجوری نوشتم چون ممکنه مثلا اولین متن در ستون B در مقابل عدد 5 از ستون A باشد و ممکنه در مقابل عدد 12 از ستونAباشد . .
    فایل های پیوست شده
  • shamsololama

    • 2010/02/15
    • 940

    #2
    با درود فراوان
    این کار رو با این ماکرو می توانید انجام دهید .
    Sub m()
    Dim p, n, i, i2, i3
    p = 0
    n = ""
    For i = 1 To 10


    For i2 = 1 + p To 30 + p
    If Range("b3").Offset(i2, 0).Value <> "" Then

    If n = "" Then
    n = Range("b3").Offset(i2, 0).Row
    End If
    n2 = Range("b3").Offset(i2, 0).Row
    End If
    Next
    For i3 = 1 + p To 30 + p
    If Range("b3").Offset(i3, -1).Value <> "" And n <> "" Then
    If Range("b3").Offset(i3, 0).Row <= n2 Then Range("b3").Offset(i3, 4).Value = 0
    If Range("b3").Offset(i3, 0).Row < n Then Range("b3").Offset(i3, 4).Value = 1
    If Range("b3").Offset(i3, 0).Row > n2 Then Range("b3").Offset(i3, 4).Value = 2
    End If
    Next
    p = p + 30
    n = ""
    Next
    End Sub

    فایل نمونه هم قرا میدم


    نوشته اصلی توسط reza_1001
    با سلام خدمت دوستان
    بنده به مشکلی برخوردم در vba و هرچه تلاش کردم نتونستم حلش کنم حالا خواستار کمک شما دوستان هستم.
    مشکل بنده اینه که 2 تا ستون دارم یکی ستون A (عدد) و دیگری ستون B (متن)
    ستون اعداد یک سری اعداد هستند که 30تایی هستند یعنی از 1تا30 از 30 تا 60 الی....
    حالا میخوام زمانی که در 30 تای اول قبل از اولین متن در ستون B ستون c مثلا با عدد1 پر بشه و بعد از اولین متن ستون B چیزی نوشته نشه
    وهمچنین در 30 تا اول بعد از آخرین متن در ستون B تا عدد 30 در ستون c مثلا با عدد 2 پر بشه .
    ودر بقیه اعداد از 30 تا 60 الی .... همینجوری عمل کنه .
    فایل رو ضمیمه کرده ام .
    البته یه نکته بگم که اعدادی که در fuction برای a تعریف کردم همیجوری نوشتم چون ممکنه مثلا اولین متن در ستون B در مقابل عدد 5 از ستون A باشد و ممکنه در مقابل عدد 12 از ستونAباشد . .
    فایل های پیوست شده
    ---------------------------------------------------------------------------------------------------
    بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
    shamsololama@yahoo.com
    09177733411

    کامنت

    • reza_1001

      • 2013/10/04
      • 86

      #3
      سلام خدمت استاد شمس العلما .....ممنون از اینکه این ماکرو رو برام درست کردید ......خدا خیرتون بده .
      فقط یک مشکلی هست که بنده باید اول میگفتم ولی یادم رفت و اون اینه که همیشه اعداد از 1 شروع نمیشوند مثلا ممکنه از 40 شروع بشه یا از 112 و ...
      در واقع میخوام جوری این sub عمل کنه که خودش بدونه که از 1تا 30 یک مجموعه است و از 30 تا 60 یک مجموعه دیگر و سپس همون کارهایی که میخوام انجام بده .
      و یک خواسته دیگه ای که از شما استاد گرامی داشتم اینه که این ماکرو رو بصورت fuction برام بنویسید البته اگر امکانش هست .
      Last edited by reza_1001; 2017/06/30, 08:10.

      کامنت

      چند لحظه..