在string中交换2个字符
我有一个包含这样的string的列:
ABCDEFG ACDEF ACDEFG ACFG ACDEFG
我想交换一个string中的2个字符包含这些字符。 行是随机select的。 例如,我需要交换3行中的A和C(行随机select)。 预期产出是:
CBADEFG CADEF ACDEFG ACFG CADEFG
VBA的做法是:
- 随机select行(50/50)
- 检查存在预交换的“A”和“C”字符
-
只交换第一次出现
码
Sub ACDC() Randomize Dim X Dim lngCnt As Long Dim strIn As String Dim strOut As String strIn = "A" strOut = "C" X = Range([a1], Cells(Rows.Count, "A").End(xlUp)).Value2 For lngCnt = 1 To UBound(X) If Rnd() > 0.5 Then 'check for both conditions If InStr(X(lngCnt, 1), strIn) Then If InStr(X(lngCnt, 1), strOut) Then X(lngCnt, 1) = Replace(X(lngCnt, 1), strIn, "|", , 1) X(lngCnt, 1) = Replace(X(lngCnt, 1), strOut, strIn, , 1) X(lngCnt, 1) = Replace(X(lngCnt, 1), "|", strOut, , 1) End If End If End If Next [b1].Resize(lngCnt - 1, 1).Value2 = X End Sub
假设你的string在A2:A6和行号标准在E1:G1,那么试试这个…
在B2
=IF(ISNUMBER(MATCH(ROWS(A$2:A2),$E$1:$G$1,0)),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"C","^"),"A","C"),"^","A"),A2)
并把它复制下来。