0

これが私のジレンマです。

クライアントの名前が記載されたワークシートと、都市に応じて名前をコピーしたいワークシートが2つあります。

例えば:

各列に関連付けられているのは、姓、名、および都市です。さまざまな都市に関連付けられた何百もの名前があります。worksheet1.xlsから、worksheet2を開くとき、またはマクロを介して、すべてのニューヨークのクライアントをworksheet2.xlsにコピーします。これは、姓が1つのセルにあるためです。ファーストネームはもう一方にあり、両方をコピーする必要があります。

あるワークシートから別のワークシートにセルをリンクしてから、基準に応じてvlookupを実行できることを確認しました。それが最も簡単な方法ですか、それとも別の方法がありますか?

4

2 に答える 2

0

このマクロを答えとして提供できます。次の改善の余地があります。

  • ちらつきアプリケーションを無効にします。
  • LastName と FirstName をarrayとして、データを追加し、多くのウィンドウの変更を避ける
  • 以前開いていたのではなく、opencloseを使用して直接 Excel を開きます。

これがコードです

Option Explicit

Sub Macro1()
'
' Macro1 Macro
'
Dim City As String
Dim FirstName As String
Dim LastName As String

City = Range("B4").Value 'B4 cell where city is
Range("C4").Select 'C4 cell where name is pasted

'go to the book, shhet and firs range with names
Windows("book_with_cities.xlsx").Activate
Sheets("year2011").Select
Range("A4").Select 'where  the data start
'main copy loop
Do While ActiveCell.Value <> ""
    'if is the city I´m lookin for copy the data to my excel of results
    If ActiveCell.Value = City Then
        LastName = ActiveCell.Offset(0, 1).Value
        FirstName = ActiveCell.Offset(0, 2).Value
        Windows("book_with_results.xlsx").Activate
        Sheets("Your_city_data").Select
        ActiveCell.Value = LastName
        ActiveCell.Offset(0, 1).Value = FirstName
        ActiveCell.Offset(1, 0).Select
        Windows("book_with_cities.xlsx").Activate
        Sheets("year2011").Select
    End If
    ActiveCell.Offset(1, 0).Select
Loop
'going back to your sheet
Windows("book_with_results.xlsx").Activate
Sheets("Your_city_data").Select

End Sub

お役に立てれば

よろしくお願いします

アレン

于 2011-08-03T21:55:36.113 に答える
0

これを行う 1 つの方法は、ワークシート 1 を照会するワークシート 2 にリモート データ参照を追加することです。
次に、ワークシート2を開くと、データを更新してワークシート1から最新のものを取得します

何かのようなもの

SELECT * FROM worksheet1.xls WHERE City=YourChoice

これは構文的に正しいクエリではありません。クエリ エディタを使用して作成してください。

サポートが必要な場合は、使用している Excel のバージョンを含めてください。

于 2011-02-18T20:20:22.790 に答える