2015-11-12 26 views
0

创建多行单元格B1中的字符串我有一个工作表中的列:在ColumnA

ColumnA 
wer 
rfvg 
swe 
dfe 

我想创建一个字符串'wer','rfvg','swe','dfe'用在T-SQL查询

SELECT value 
FROM table 
WHERE code IN ('wer','rfvg','swe','dfe') 

什么我现在做的事:

1. put CONCATENATE("'";A1;"',") in B1 
2. drag it all the way down 
3. copy+ paste the generated values in ColumnB into my query 

我所得到的是这样的:

SELECT value 
FROM table 
WHERE code IN ('wer', 
'rfvg', 
'swe', 
'dfe') 

由于这些最后可以包含最多100个令人讨厌的代码。 我想在单元格B1中创建一个单一的连续字符串。

有没有办法做到这一点? 感谢名单与我的思维

回答

2

这里是一个宏执行此:

Sub BuildListForQuery 
    Dim oCells As Object, aCell As Object, oDoc As Object 
    Dim iColumnA As Integer, sList As String 
    oDoc = ThisComponent 
    iColumnA = 0 
    oColumn = oDoc.Sheets(0).Columns(iColumnA) 
    oRanges = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges") 
    oRanges.insertByName("", oColumn) 
    oCells = oRanges.Cells.createEnumeration 
    If Not oCells.hasMoreElements Then Print "Sorry, no text to display" 
    While oCells.hasMoreElements 
     aCell = oCells.nextElement 
     If sList = "" Then 
      sList = "'" + aCell.String + "'" 
     Else 
      sList = sList + ",'" + aCell.String + "'" 
     End If 
    Wend 
    aCell = oDoc.Sheets(0).getCellRangeByName("B1") 
    aCell.setString(sList) 
End Sub 

B1中的结果是'wer','rfvg','swe','dfe'

+0

太棒了!感谢名单! – Henrov

1

如何:

  • 放在C1 =CONCATENATE("'",A1,"'")
  • 在D1 =CONCATENATE(B1,",'",INDIRECT("A" & COLUMN()-2),"'")
    • COLUMN将返回该列中的数字:A为1,B为2等
    • INDIRECT接受一个字符串入口并返回一个单元地址的内容,在这种情况下,列A中的单元格行[从列号计算]。因此,列D(4)看第2行(4-2),列E(5)看第3行(5-2)等。
  • 复制并粘贴D1, 100列。将列CX)
  • 把一些其他的细胞,我们会说B3为这篇文章的目的,=COUNTA(A1:A100)显示你有多少项在列A
  • 在B1(你想要的细胞最后的字符串)把公式=INDIRECT(ADDRESS(1,B3+2)) - 当然用公式替换B3 公式
    • ADDRESS为(行号,列号) - 此处[行1,列(列A + 2然而许多条目),并返回一个LetterNumber单元地址
+0

每次列数可能不同,这大大降低了此解决方案的有效性。尽管我从这个解决方案学到了东西!感谢名单! – Henrov

相关问题