在两列之间合并Excel单元格

时间:2015-06-04 20:21:31

标签: excel vba excel-vba

我正在使用许多Excel文件。第一列用标题 CD newCD = new CD(); int line = 0; for(String string : this.ourDB) { if(line == ARTIST) { newCD.setArtist(string); System.out.println(string); line++; } else if(line == YEAR_AND_ALBUM_NAME){ String[] elements = string.split(" "); String[] albumNameArr = Arrays.copyOfRange(elements, 1, elements.length); String year = elements[0]; String albumName = join(albumNameArr, " "); newCD.setYear(year); newCD.setAlbumName(albumName); System.out.println(year); System.out.println(albumName); line++; } else if(line >= SONGS && !string.equals("")) { newCD.setSong(string); System.out.println(string); line++; } else if(string.isEmpty()){ line = 0; } } 固定。另一列名称为product-name

我正在尝试合并这两列之间的列,每个文件在这两列之间包含不同数量的列price

我在编写宏来运行每个Excel文件时遇到问题,有人能给我看一个例子吗?

1 个答案:

答案 0 :(得分:1)

我假设只需要检查第一行。假设这些是标题。

您可以使用以下VBA检查列标题并合并列

我使用过随机变量,你可能会相应改变。

Sub test() 
    Cells(1, 1).Select 
    j = 1 
Do
    k = Cells(1, j).Value
    Cells(1, j).Select
    j = j + 1
Loop Until (k = "Product-name")
c1 = j
Do
    k = Cells(1, j).Value
    Cells(1, j).Select
    j = j + 1
Loop Until (k = "Price")
c2 = j - 2
If (c2 > c1) Then
    Range(Columns(c1), Columns(c2)).Select
    Selection.Merge
End If
End Sub

k变量将存储列值,并将与“Product-name”和“Price”进行比较。
c1将存储“Product-name”的下一列编号 c2将存储“Price”-1的列号,在逻辑中它前进2,因此用2减去列号。

现在两个标题之间都有列号。

这里有一个需要考虑的小方案,如果没有列或者这两列之间至少有一列,那么直接就不能合并列。所以列值的额外比较。

我希望这可以回答您的问题。代码经过测试,工作正常。