2016-12-28 12 views
-2

正しいフォーマットを達成するのに役立つコードを作成しようとしています。私が望むのは、従業員(EE)の行全体を新しいシートに貼り付け、次に同じ従業員と一致するように2番目のパート(ER)の値を取得することだけです。データベースを操作する条件

つまり、同じ従業員に代わって100(ペンEE(Tal))と雇用者が200(ペンERS(Tal))の従業員給与年金拠出額を支払うとします。次に、ワークシートは列A = Pers No、列B =従業員名、列C = ID番号、列D = PenPay、列E =ペンEE(Tal)および列F =ペンER(Tal)およびG =合計(ペンEE +ペンER値)は、例のタブとまったく同じです。

これは意味があると思います。私はいくつかの方法を試みましたが、これまで運がありませんでした。皆さんのお手伝いをありがとうございます。

+0

ADODB経由でVBAでExcelのSQLサポートを見ましたか?おそらく最もクリーンな解決策になるでしょう。 –

+0

こんにちは、私は持っていません。私はそれを見ることができるようにリンクを投稿してください。私はVBAコーディング処理についてかなり新しいです。 – Mouctar

答えて

1

問題の説明から、私はあなたがExcelを使用していることを解読できると思います。

最も簡単な方法は、すべてのVBAを使って、代わりに、ブック機能INDEXMATCHを使用するのではありません。

私はあなたの問題を解決するには、3つの基本的なアプローチを参照してください。後者は、1次元でなければならない検索範囲内に完全に一致する行または列を戻します。 (正確に一致させるには、実際には検索オプション0が必要です。)関数 INDEXは、範囲内の指定された行と列の値を返します。両方を組み合わせると、 VLOOKUPHLOOKUP,のより柔軟な判断が得られます。これを使用して、特定の従業員の2番目の表の値を見つけることができます。 ( MATCHは、一致するものが見つからない場合は N/Aエラーを返します)。

2番目の方法は、VBAでExcelオブジェクトモデルを使用する方法です。範囲のFindメソッドを使用して、値の範囲を検索できます。一致が見つかった場合はセルを返し、一致しない場合はNothingを返します。検索結果がNothingでない場合は、EntireRowプロパティを使用して行全体を取得し、Cellsプロパティを使用して行内のセルを選択することができます。

最後に、ADODB経由でSQL for Excelのサポートを使用できます。これを行う方法については、Microsoft pageとこの古いquestionを参照してください。 SQL問合せの作成方法がわかっている場合は、SQLを使用して問題を解決することができます。

+0

@Mocctar私は同意します。 INDEXとMATCHの使用は、十分なデータが与えられていると遅くなる可能性があります。この場合、3番目のアプローチを見てみたいかもしれません。 SQLサポートでは、より効率的な結合アルゴリズムを使用してデータに一致させます。 –

+0

こんにちは、ありがとうございます。しかし、私は現在、インデックスとマッチを使用して正しいフォーマットを取得しています.70以上の年金制度と約7000人の従業員を抱えているため、私はこれまでに行っていますので、このオプションは小規模なレポートには適していますが、 2番目の提案はより良い選択かもしれませんが、私はVBAコーディングについてかなり新しいので、どこから始めるべきか考えることさえも苦労しています。最終的な提案も良いかもしれませんが、私はそれについて初めて聞いているので、それは私を永遠に理解することになるでしょう。仕事をするコードを書いても大丈夫です。 – Mouctar

+0

締め切りが短くてストレスがかかる可能性があるので、私はSQLに関する学習資料を見つけることができます。私は仕事で自分の人生をより良くしたいと思っています。何か助けていただければ幸いです。 – Mouctar

関連する問題