0

Excel または VBA を使用して、異なる時点の実験での遺伝子発現値を比較して、レポート シートを生成する方法を教えてください。各シート (時点) には、遺伝子 ID と値の 2 つの列が含まれており、遺伝子 ID は各シートで同じではない場合があります (時点: 1H、4H、8H など)。レポート シート (sheet4) で、すべての遺伝子 ID (列 1) と各時点の値 (列 2、列 3、列 4) を取得したいと考えています。したがって、最終シート (シート 4) には、各シートのすべての遺伝子 ID が列 1 に含まれ、シート 1 (値 1)、シート 2 (値 2)、およびシート 3 (値 3) の式の値は、列 2、列 3、および列 4 になります。シートの 4。Excel の vlookup を使用して、ID を比較/ルックアップした後、シート 4 に式の値を追加できますが、GeneID をすべてのシートにまとめて追加する方法がわかりません。

次のようになります。

シート 1 (1H):

【タイトル】GeneID、Value1

エコ、2;

Xmo、4;

シート 2 (4H):

【タイトル】GeneID、Value2

エコ、6;

うーん、8;

Sheet3 (24H):

【タイトル】GeneID、Value3

Xmo、10;

あま、12;

最後のシート 4 (要約):

【タイトル】GeneID、Value1、Value2、Value3

エコ、2、6、(空白);

Xmo、4、(空白)、6;

うーん、(空白)、8、(空白);

アナ、(空白)、(空白)、12;

4

2 に答える 2

1

最も簡単な方法は、表示されている設定でData|Consolidateコマンドを使用することだと思います。

ここに画像の説明を入力

ここに画像の説明を入力

于 2012-05-18T07:42:31.243 に答える
0

ADO と Excel で多くのことができます。シート名が 1Hour、4Hour、および 24Hour であるとします。

''http://support.microsoft.com/kb/257819
Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

''This is not the best way to refer to the workbook
''you want, but it is very convenient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

''HDR=Yes, the names in the first row of the range
''are used as field (column) names.
''
''This is the ACE / Excel 2007/10 connection string, you can get more
''here : http://www.connectionstrings.com/excel

strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

''Late binding, so no reference is needed

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "TRANSFORM Sum(ValX) As SumVal " _
       & "SELECT GeneID FROM ( " _
       & "SELECT GeneID, '01Hour' As TimeX, Value1 As ValX  " _
       & "FROM [1Hour$] " _
       & "UNION ALL " _
       & "SELECT GeneID, '04Hour' As TimeX, Value2 As ValX  " _
       & "FROM [4Hour$] " _
       & "UNION ALL " _
       & "SELECT GeneID, '24Hour' As TimeX, Value3 As ValX  " _
       & "FROM [24Hour$] ) t " _
       & "GROUP BY GeneID " _
       & "PIVOT TimeX"

rs.Open strSQL, cn, 3, 3


''Pick a suitable empty worksheet for the results
With Worksheets("Sheet4")
    For i = 0 To rs.Fields.Count - 1
        .Cells(1, i + 1) = rs.Fields(i).Name
    Next

    .Cells(2, 1).CopyFromRecordset rs
End With

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

Jet/ACE SQL を使用できます。

基本 Microsoft Jet SQL for Access 2000
中級 Microsoft Jet SQL for Access 2000
上級 Microsoft Jet SQL for Access 2000

于 2012-05-18T11:28:55.193 に答える