Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1364 / 13644 ツリー ←次へ | 前へ→

【74879】COLUMNの入れ替え コロタン 13/10/19(土) 20:14 質問[未読]
【74880】Re:COLUMNの入れ替え γ 13/10/19(土) 20:40 発言[未読]
【74881】Re:COLUMNの入れ替え コロタン 13/10/19(土) 21:36 お礼[未読]
【74882】Re:COLUMNの入れ替え γ 13/10/19(土) 22:00 発言[未読]

【74879】COLUMNの入れ替え
質問  コロタン  - 13/10/19(土) 20:14 -

引用なし
パスワード
   みなさま初めまして。
vba初心者です。
自作のvbaが上手く動かないので、お助けください。

 A   B   C   D  E   F
東京 千葉 埼玉
2   1  3

という表があるとします。
私はこのCOLUMNを

 A   B   C   D  E   F
千葉 東京 埼玉
1   2  3

の順番に並び替えたいと思いました。
そこで以下のようなプログラムを書きました。

考え方としては、まずABCに空白のCOLUMNを挿入する。
それからIF文を用いて、千葉ならばAに、東京ならばbに、埼玉ならばcに移動します。
Sub 入れ替え()

Columns("a:c").Insert

Range("d1").Select

For TATA = 4 To 6

If Cells(1, TATA) = "千葉" Then Columns("A") = Columns(TATA)
If Cells(1, TATA) = "東京" Then Columns("B") = Columns(TATA)
If Cells(1, TATA) = "埼玉" Then Columns("C") = Columns(TATA)

Next TATA

End Sub

ところがエラーで止まってしまいました。
どこがまずいのでしょう。お教えください。お願いいたします。
またもっとスマートな方法があるならば、教えていただけると今後の勉強になります。
重ね重ねよろしくお願いいたします

【74880】Re:COLUMNの入れ替え
発言  γ  - 13/10/19(土) 20:40 -

引用なし
パスワード
   Columns("A").Value = Columns(TATA).Value
とするとエラーにはなりませんね。理由は正確にはわかりませんが。

通常、Range("A1")などのセル範囲を表すオブジェクトのプロパティは
省略しないほうがいいです。

なお、この場合は、全行の値を対象にしますから、時間もかかりますし
無駄です。

また、この場合、
2行目の値で、列方向でソートするのがスマートじゃないですか?

# ちなみに、TATAという変数名の意味はなんですか?

【74881】Re:COLUMNの入れ替え
お礼  コロタン  - 13/10/19(土) 21:36 -

引用なし
パスワード
   早速の返信ありがとうございます。

本当は、TATAではなく、NとかMにしようとしたのですが、現実に会社で使う場合、もっと膨大な表なので、COLUMN("N")とか指定する場合があるので、紛らわしくならないように、TATAというエクセルの行列に出てこない変数にしたまでで、特に意味はありません。

上手く動きました。が確かにこれだけのデータなのに、重いですね。

どうしても会社の表で、見出し語で並び替えをしなくてはらないので、
このやり方しかないのですが、重い。

本当はオートフィルターの縦横逆の、簡単なやり方で行の入れ替えがやれればいいのですが、知識不足で、なかなか方法がみつかりません。

【74882】Re:COLUMNの入れ替え
発言  γ  - 13/10/19(土) 22:00 -

引用なし
パスワード
   >どうしても会社の表で、見出し語で並び替えをしなくてはらないので、
>このやり方しかない
そんなことないですよ。

・列方向にソート
・ソートの順は、ユーザー定義のリストを使用
という風にすればいいんです。
検討して下さい。

1364 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free