VBA实现语料或术语表奇偶行分列和双列合一

一、问题的提出

日常的双语语料处理或者术语格式转化过程中经常要用到下面的操作:

1.在Excel中把一列双行即上下对照的形式改为左右对照。如下图所示,把A转化为B这种样式。

2. 把B这种左右对归照转化为A这种上下对照样式。

VBA实现语料或术语表奇偶行分列和双列合一_第1张图片

二、问题的解决

这个问题看似不难,但是如何处理好却不太容易。现有的方法有公式法、辅助列法等,但是都无法实现一键转换。这时,我们可以用到VBA,编制宏,通过运行宏,快速实现一键转换。

1. 首先,第一种,把上下对照改为左右对照,VBA代码如下,主要用了do while循环和mod()判断奇偶数的方法。

Sub SplitData()
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    i = 1
    j = 1
    k = 1
    Do While Cells(i, 1) <> ""
        If i Mod 2 = 0 Then
            Cells(j, 2) = Cells(i, 1)
            j = j + 1
        Else
            Cells(k, 3) = Cells(i, 1)
            k = k + 1
        End If
    i = i + 1
    Loop
End Sub

通过alt+F11打开VBA编辑器,新建模块后,可以把这串代码拷贝进去。如下图所示:

VBA实现语料或术语表奇偶行分列和双列合一_第2张图片

2. 其次,第二种是把左右对照,转化为上下对照的形式:

Sub MergeColumns()
Dim i As Integer
Dim j As Integer
i = 1
j = 1
Do While Cells(i, 1) <> ""
    Cells(j, 3) = Cells(i, 1)
    Cells(j + 1, 3) = Cells(i, 2)
    i = i + 1
    j = j + 2
Loop
End Sub

上述代码依然用到了循环的方法,利用Cells来获取单元格的值,通过数值变换来获取不同位置的数据。

三、注意事项

1. 由于在编程过程中采用了绝对引用,所以第一种上下转左右的方法,要把语料放入A列,删除B列和C列为空后操作。第二种方法左右转上下时,A列和B列放左右对照的语料,C列清空,最后结果放在C列。

2. 使用时,先把语料放入Excel,然后点上面的开发工具——宏——选择合适的宏执行, 就可以一键实现了。

VBA实现语料或术语表奇偶行分列和双列合一_第3张图片

你可能感兴趣的:(VBA,VBA,语料库,术语库)