私はSQL Serverのテーブルからデータを抽出するユーザーフォームを作成しています。データの上位80%を抽出し、それをExcelファイルにVBAコードで置きます。 私がしたいことは、この80パーセンタイルのデータがExcelシートに保存されていることです。テキストゾーンに数字だけを入力してExcelシートからデータの割合を選択できるようにしたいと思っています?トップシートのデータの上位N%を選択
これは私がSQL Serverからデータベースから抽出するために使用していたコードです:ここ
Private Sub CommandButton1_Click()
Dim sSql As String
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim cmdObj As ADODB.Command
Dim qf As Object
Sheets("sheet1").Select
Selection.ClearContents
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=swat_admin;PASSWORD=swat_admin;Initial Catalog=SWAT_V2_PLL;Data Source=NCEFORREP"
sSql = "select TOP 80 PERCENT func.coresitecode,func.SiteCode,feature_id, TOTAL_PNRs,PNR_rank_id from rpt.functional_site_mapping func inner join (select TOP 80 PERCENT * from rpt.top_PNR_contributing_sites order by TOTAL_PNRs DESC) PNR on func.ptf_id = pnr.ptf_id and func.coresitecode = pnr.coresitecode and func.sitecode = pnr.sitecode order by PNR_rank_id "
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sSql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
If rs.EOF Then
MsgBox (" the record set is empty. rs.EOF = " & rs.EOF)
Else
MsgBox ("The number of rows returned from the query is: " & rs.RecordCount)
Range("a1").Select
For Each qf In rs.Fields
Range("a1").Offset(0, coloffset).Value = qf.Name
coloffset = coloffset + 1
Next qf
Range("a2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
End If
End sub
は、誰もが、私はあなたに感謝助けることができれば、私のExcelのファイルです:
http://www.cjoint.com/c/FDzjyTNB1Lv
あなたはファイル全体ではなく直面している問題についてのコードと説明をお役に立てば幸いです。 – newguy
私はポストを編集しました。コードはDBからの抽出にありますが、私が必要とするのは80パーセントのその割合からです。NはNがユーザーによってtextzoneのuserformから選択されるようにする必要があります。フィルタを別のフィルタからフィルタリングする方法はありますが、テキストゾーンとvbaマクロを関連付ける方法は私の問題です – mateos
'[...]を詳しく教えてください。ユーザーがExcelシートからデータの割合を選択できるようにしたいのですが、テキストゾーンの番号[...] '?私はあなたが達成したいことをよく理解していません。 – Ralph