プロが教えるわが家の防犯対策術!

エクセルのVBAでプログラムを作成中です。

下二桁が1の項目のある列があれば、その列を別ワークシートの1番目の列に引用、
下二桁が2の項目のある列があれば、その列を別ワークシートの2番目の列に引用。。というように、
別ワークシートへ引用することができればな、と思います。

ポイントは、

下二桁を認識し、その値を列数と認識するにはどうすればよいか?
ex) 101023がA1セルにあり。⇒ 下二桁が23なので、別ワークシートでは23列目。

application.worksheetfunction
value
vlookup

。。色々コードは思いつくのですが、そもそも見当違いなのかもしれません。
ご教示ください。

A 回答 (3件)

こんばんは



シート1のA1に数字を入れて以下のプログラムを実行してみてください。
Sub コピー()
Dim TargetRow As Long

Worksheets(1).Select
TargetRow = Right(Cells(1, "A"), 2)
Cells(1, "A").Copy Worksheets(2).Cells(TargetRow, "A")
End Sub

>下二桁を認識し
Right関数を使います。
右から指定した字数分だけ取り出す関数です。

>その値を列数と認識する
セルの指定の仕方に
Cells(行番号,列番号)
という方法があります。
特定のセルを指定するならば
Range("A23")
のような指定の仕方が出来ますが、
場合によって指定するセルを変えたいときには
Cells
が便利です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変助かりました。

お礼日時:2010/10/29 23:02

質問が不明確。

補足要求。
なぜ2桁と言ってながら
下二桁が1の項目などの例を出すのか。紛らわしい
ーー
A1には日付的な数字が入っているのか。日付(ヒヅケシリアル地)で無いでしょうね。それなら
やり方が変わる。
それで日ごとに、列をわけて、別シートにデータを整理したいのか(推測)
データ量(2つめ)以降は同なのか、あるのか。
そういうことを書いてくれれば判りやすいが、どうですか。
もとのワ-クシートのデータの行・列の有様を質問例として挙げて質問するものだ。
引用と言う言葉もこのような意味では使わない。参照、コピー 持ってくる からデータをセットする
などかな。検索して値を採ってくるのを、引用と言う表現している質問例は在る。
ーー
application.worksheetfunction
value
vlookup
などの使用は本質ではない。まとはずれ。
ーー
そんなことを書くより
(1)データ例
(2)目的 完成形の例
(3)簡単な説明(1)と(2)のつながり。個の県では、文字列末尾2桁が列を決める。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
質問自体がいまひとつでした。
的確に質問のできるよう、気をつけます。

お礼日時:2010/10/29 23:13

数字は、あくまでも計算で取り出します。


どういうことをしようとしているのか分かりませんから、こちらの想像の範囲でマクロにしました。

'//
Sub Test1()
 Dim col As Long
 Dim c As Variant
 With Worksheets("Sheet1")
  Application.ScreenUpdating = False
  For Each c In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
   col = c.Value - Int(c.Value / 100) * 100 '2桁を取り出す
   If col > 0 Then
    With Worksheets("Sheet2").Cells(Rows.Count, col).End(xlUp)
     If .Value = "" Then
       .Value = col '1行目に書き込む
     Else
       .Offset(1).Value = col '2行目以降に書き込む
     End If
    End With
   End If
  Next
  Application.ScreenUpdating = True
 End With
End Sub
    • good
    • 0
この回答へのお礼

回答頂き、ありがとうございました。
期待している回答でした。

お礼日時:2010/10/29 23:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!