QA@IT

数値を抽出する時の範囲方法(excel2010)

1855 PV

得意先の当年、前年の売上実績表をExcel2010で作成しています。

A.xls(売上集計表)を立ち上げ、B.xls(前年売上金額)を開いて計算し、得意先の当年と前年の数値をA.xlsに書き込んでおります。
B.xlsには、A列に1から60までの順位があり、B列には会社名があり、C列に前年の数値があります。
A.xlsには、B列に1から8の順位までが固定で入力されていて、C列に会社名があり、D列に当年の数値、E列に前年の数値を書き込んでおります。
当年の数値は問題ないのですが、前年の数値をA.xlsに書き込む際に、B.xls会社名の順位と会社名を見てしまうため、数値が逆になってしまう事があります。
A.xlsにある会社名は、当年の数値を見てA.xlsに書き込んでおります。会社の順位が、当年と前年において同一であれば問題ないのですが、異なる場合、数値が異なって書き込まれてしまいます。
会社名をキーにして、前年の売上金額を載せたい。例えば当年1位のA会社が、前年が2位になり、
前年の1位はB会社とします。
当年1位は、A会社の売上金額、前年の金額は2位であるA会社売上金額が入るようにして、1位のB会社の前年度の金額が入らないようにしたいと思います
A.xlsのC列の会社名をキーにして、得意先の当年と前年の順位が同一でなくても、前年の順位を出すにはどうすれば良いでしょうか?

下記コードを使っています

Dim i as long
dim j as Long
Dim myrange As Range
j = 3
For i = 1 To 8
Set myrange = Range("A:A").Find(What:=i, lookat:=xlWhole)
If myrange Is Nothing Then
Workbooks(ThisWorkbook.Name).ActiveSheet.Range("E" & j) = "チェック"
Else

myrange.Offset(0, 2).Copy ThisWorkbook.Name.ActiveSheet.Range("E" & j)
End If

j = j + 1
Next i

ご教授下さい
よろしくお願い致します

  • まずは現状のコードの各行で何が起こっているのかを調べて自分で理解できる様に頑張ってみるといいと思いますよ(そのコードの回答をもらってコピペだけではなく、なぜ期待通りに行く様になったか調べましたか?)。
    それがわかればワークブックの指定、検索対象列、検索キーを工夫して同じような処理を書くだけだと思います。
    -
  • 参考になるサイトを教えていただけませんか?
    かれこれ二、三日位悩んでおります
    -
  • どこで躓いているのかわからないのでなんとも言えません(VBA全般扱っているサイトが全部参考サイトになってしまう)が、たとえば Set myrange= ~の次の行で、キーとするための会社名を変数に入れるとかDebug.Printすることはできますか? -
ウォッチ

この質問への回答やコメントをメールでお知らせします。