2016-09-13 7 views
0

テキストマーカーを列内の特定のテキストに置き換えようとしています。コラムTried...テキストマーカーをvbaの列のテキストに置き換えます。

enter image description here

、私はセルの範囲からランダムなセルを取得するにはRandCell以下の機能を使用しています:コラムWanted

Function RandCell(Rg As range, columnRange As range, headerRange As range) As Variant 
    'Dim rplc 
    Dim textRange 

    'get random cell 
    RandCell = Rg.Cells(Int(Rnd * Rg.Cells.Count) + 1) 
    'find column to replace 
' rplc = RandCell.Find(headerRange) 

End Function 

、私は、次のformularを使用していますsubstitute値:=IF(COUNTIF(E3;"*"&$C$2&"*");SUBSTITUTE(E3;$C$2;C3);SUBSTITUTE(E3;$D$2;D3))

ただし、10行以上の場合、この解決策は非常に厄介です。したがって、私はvbaで関数を実装することを考えていました。

上記のように、私はRandCell機能に機能を実装しようとしました。しかし、私はvbaにとって非常に新しく、あなたのご意見をお待ちしております!

返信いただきありがとうございます。

UPDATE

あなたは例を見ることができます以下:

enter image description here

まず、ランダムなテキストを選びだしています。次に、たとえばE3の場合、ランダムテキストのテキストマーカーはCまたはDの値に置き換えられます。以下のようなデータと

答えて

1

:COLS B、及びD、次のマクロで

enter image description here

は:

Sub mrquad() 
    Dim L As Long, M As Long, N As Long, Kount As Long 
    Dim v1F As String, v1L As String 

    Kount = 10 

    With Application.WorksheetFunction 
     L = .CountA(Range("A:A")) - 1 
     M = .CountA(Range("C:C")) - 1 
     N = .CountA(Range("D:D")) - 1 
     For kk = 1 To Kount 
      v1 = Cells(.RandBetween(3, L + 2), "A").Value 
      v1F = Left(v1, Len(v1) - 3) 
      v1L = Right(v1, 3) 
      If v1L = "[1]" Then 
       v2 = Cells(.RandBetween(3, M + 2), "C").Value 
      Else 
       v2 = Cells(.RandBetween(3, N + 2), "d").Value 
      End If 
      Cells(kk, "F").Value = v1F & v2 
     Next kk 
    End With 
End Sub 

ピックうサンプルはランダムにカラムからと、サフィックスに応じて、カラムCまたは列Dいずれかからランダム置換サフィックスを選択し、カラムFに結果を配置:

enter image description here

の数サンプルはKount変数によって決定されます。 CまたはDの空白は空ではなく空白です。

+0

本当にありがとうございます。しかし、あなたの答えは私の問題を完全に解決するわけではありません。私はF3(あなたの投稿された画像内)で 'A 'という列からのランダムな値が出現するとき、' 'whatever [1]'、 '' [1] 'が行 '[1] 'の値は' 47'です。 '[2]'を含むランダムな値が現れると、 'h1'が使われます。 – mrquad

+1

@mrquadわかりません。 –

+0

私の上記アップデートもご覧ください。私はまた、上記のことをもう一度明確にしようとしました。私も写真を追加しました。 – mrquad

関連する問題