Excel VBA – 子string和粘贴

我有一个有美国州名缩写的列(MI,NY,FL等)。 我有一个问题,有一个被列为“新泽西州”的观察。 这个观察每周在同一列内移动。

我想创build一个macros,将每个观察子串串成两个字符,然后把所有的字都放下。

我能够使用Mid函数来抓取前两个字符,然后将其粘贴到原始值以上。 此外,是否可以一口气补偿,还是有办法一次完成?

谢谢!

假设你有第一列中的列表,从第一行开始,下面的macros将做到这一点。 很明显,你可以对代码进行很多改进和错误检查,但是这会让你开始。

 Sub FixStates() Dim lRow As Long Dim lCol As Long Dim strContent As String lRow = 1 lCol = 1 Do While Cells(lRow, lCol) <> "" strContent = Trim(Cells(lRow, lCol)) If Len(strContent) > 2 Then Cells(lRow, lCol) = Left(strContent, 2) lRow = lRow + 1 Loop End Sub 

如果你希望你的结果被源单元格中的一个单元格所抵消,那么Daniel Cook的公式就可以正常工作。

另一方面,如果你想要你的结果覆盖源单元格,你将不得不复制单元格的结果(使用与上面相同的公式),并粘贴特殊的值在源单元格的顶部(你可以做这对于许多单元一次),或写一个VBA子。

我个人发现它更简单的“复制和粘贴特殊的价值”的方式。