سوال در خصوص جابجایی اقلام در سلول ها

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

    • 2016/09/05
    • 72
    • 29.00

    سوال در خصوص جابجایی اقلام در سلول ها

    سلام و وقت بخیر مدیران عزیز

    من در یک فایل اکسل نمونه که پیوست کردم اطلاعاتی خاص در هر سلول هست که این اطلاعات در هر سلول بین ویژگی هاشون با کاما از هم جدا و تفکیک شدن

    مثلا: ادويه، چوب، خاک و زمين، گياهان معطر، گل، چرم

    و می خواستم بدونم چطوری می تونم کاری کنم که این اطلاعات به صورت راندوم جابجا بشن
    مثلا این مدلی بشن: خاک و زمین، گل، گیاهان معطر، چرم،ادویه، چوب

    testper.xlsx
  • MoReNu

    • 2016/09/05
    • 72
    • 29.00

    #2
    مدیران عزیز راهی هست؟

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4598
      • 100.00

      #3
      سلام دوست عزیز
      چیزی که شما دنبالش هستین فکر نکنم با فرمول نویسی معمولی به جواب برسید یا اینکه خیلی سخت به جواب میرسید
      به نظرم بهتره از کدنویسی vba استفاده کنید.
      این قطعه کد رو داخل یک ماژول کپی کنید:
      کد:
      Function EI_Rand(text As Range)
      Dim countmy1 As Integer
      my = text.Value
      my1 = Split(my, "¡")
      myrand = RandArr(UBound(my1))
      For i = 0 To UBound(my1)
          lastmy = my1(myrand(i) - 1) & "¡" & lastmy
      Next i
      EI_Rand = Left(lastmy, Len(lastmy) - 1)
      End Function
      
      
      Function RandArr(arr_dim As Integer)
      Dim arr As Variant
      Dim i As Integer, j As Integer
      ReDim arr(arr_dim)
      i = 1
      Do
          j = Int((arr_dim + 1) * Rnd)
          If arr(j) = 0 Then
              arr(j) = i
              i = i + 1
          End If
      Loop Until i = arr_dim + 2
      RandArr = arr
      End Function
      حالا تو صفحه اکسل فرمول زیر رو بنویسید:
      کد:
      =EI_Rand(A1)

      کامنت

      • MoReNu

        • 2016/09/05
        • 72
        • 29.00

        #4
        نوشته اصلی توسط Amir Ghasemiyan
        سلام دوست عزیز
        چیزی که شما دنبالش هستین فکر نکنم با فرمول نویسی معمولی به جواب برسید یا اینکه خیلی سخت به جواب میرسید
        به نظرم بهتره از کدنویسی vba استفاده کنید.
        این قطعه کد رو داخل یک ماژول کپی کنید:
        کد:
        Function EI_Rand(text As Range)
        Dim countmy1 As Integer
        my = text.Value
        my1 = Split(my, "¡")
        myrand = RandArr(UBound(my1))
        For i = 0 To UBound(my1)
            lastmy = my1(myrand(i) - 1) & "¡" & lastmy
        Next i
        EI_Rand = Left(lastmy, Len(lastmy) - 1)
        End Function
        
        
        Function RandArr(arr_dim As Integer)
        Dim arr As Variant
        Dim i As Integer, j As Integer
        ReDim arr(arr_dim)
        i = 1
        Do
            j = Int((arr_dim + 1) * Rnd)
            If arr(j) = 0 Then
                arr(j) = i
                i = i + 1
            End If
        Loop Until i = arr_dim + 2
        RandArr = arr
        End Function
        حالا تو صفحه اکسل فرمول زیر رو بنویسید:
        کد:
        =EI_Rand(A1)

        می شه توضیح بدین در اکسل چطوری این کد رو اجرا کنم؟

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4598
          • 100.00

          #5
          نوشته اصلی توسط MoReNu
          می شه توضیح بدین در اکسل چطوری این کد رو اجرا کنم؟

          نمیدونم چقدر با کدنویسی vba در اکسل آشنایی دارید. کامل از بیس میگم خدمتتون
          کلید ترکیبی alt+f11 رو بزنید وارد محیط کدنویسی بشید. از منوی insert گزینه Module رو انتخاب کنید. یک صفحه سفید ایجاد میشه. کدهایی که تقدیم کردم اونجا کپی کنید.
          حالا تو محیط خود اکسل مثل بقیه فرمول هایی که مینویسید فرمولی که عرض کردم رو بنویسید.

          کامنت

          چند لحظه..