带有vba的列中的文本replace文本标记
我正在尝试用列中sorting的某些文本replace文本标记。
在Tried...
列中,我使用下面的RandCell
函数从一个单元格范围内获得一个随机单元格:
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
在Wanted
列中,我使用下面的公式substitute
下列值: =IF(COUNTIF(E3;"*"&$C$2&"*");SUBSTITUTE(E3;$C$2;C3);SUBSTITUTE(E3;$D$2;D3))
但是,如果我有超过10行这个解决scheme是非常尴尬的。 因此,我想在vba中实现一个函数。
如上所述,我尝试将function实现到RandCell
函数中。 不过,我对vba非常新颖,请您提出宝贵意见!
我很感激你的回复!
UPDATE
下面你可以看到一个例子:
首先,select一个随机文本。 然后,例如在E3
中,随机文本中的文本标记将被replace为C
或D
的值。
有了这样的数据:
在列A , B和D中 ,下列macros:
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
将从A列中随机抽取10个样本,根据后缀,从列C或列D中选取一个随机replace后缀,并将结果放在列F中 :
样本数量由Kount
variables确定。 列C或D中的空格是单个空格而不是空格。