![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
No1です。
>n m に何かいれればよいのですか
回答で説明してあるように、入れ替える対象となる列番号です。
(正しくは、配列の第二添え字のインデックス番号)
他の補足コメントを見ると、なんだか迷走しているようなので、多少一般化したものを作成してみました。
2次元配列だけを対象にします。
使い方は、以下のような感じ。
x = Range("A1:D6").Value
f = columnChanger(x, 2, 4)
If f Then Range("A8:D13").Value = x
関数化してありますが、プロシージャとほぼ同様です。
戻り値は、Booleanで
TRUE:列の入れ替え処理を完了
FALSE:引数の不整合などで、無処理のまま
を意味します。
確実に処理できることがわかっている場合は、戻り値は取得しなくてもOKです。
x = Range("A1:D6").Value
columnChanger x, 2, 4
Range("A8:D13").Value = x
みたいな感じ。
第一引数は対象となる配列。第二、第三引数は入替え対象のインデックス番号です。
(A列始まりの配列ならシートの列番号と一致しますが、他のセル範囲の場合はインデックスなので番号はずれます。)
関数本体は以下の通り。
Function columnChanger(ByRef arr, m As Long, n As Long) As Boolean
Dim i As Long, tmp
Dim f As Boolean
' 引数チェック
f = IsArray(arr)
If f Then
On Error Resume Next
While Err.Number = 0
i = i + 1
tmp = UBound(arr, i)
Wend
On Error GoTo 0
If i <> 3 Then f = False
End If
If f Then
If m < LBound(arr, 2) Or UBound(arr, 2) < m Then f = False
If n < LBound(arr, 2) Or UBound(arr, 2) < n Then f = False
End If
columnChanger = f
If Not f Then Exit Function
' 列の入れ替え
For i = LBound(arr, 1) To UBound(arr, 1)
tmp = arr(i, n)
arr(i, n) = arr(i, m)
arr(i, m) = tmp
Next i
End Function
No.3
- 回答日時:
もし一気にしたければ既に出ていますけど、
・B列をZ列(ここは任意且つ使われていない所)にコピペ。
・C列をB列にコピペ。
・Z列をC列にコピペ。
マクロの自動記録でそこそこ作れるのでは?
あとは無駄を削ってみる。
No.2
- 回答日時:
>列の順番を入れ替えて吐き出すことは可能でしょうか
を具体的に記載されてないので回答がわからないのでは?
例:
2列目と4列目を入れ替える。
n:2
m:4
になりますよね?
でも『取得したデータのある列(任意の3列とか?)とある列(同じ)を入れ替える』としたら、また回答も変わるかもです。
単に応用ですけどね。
なのでどの列とどの列をについて、具体的な記載程的確な回答に繋がると思いますよ。
応用が厳しいのであれば。
No.1
- 回答日時:
こんにちは
変数xは基本的に2次元配列になっていますので、
tmp = x(i, n)
x(i, n) = x(i, m)
x(i, m) = tmp
を行数分繰り返せば、n列とm列を入れ替えられます。
ループするのがかったるければ、一旦、出力してしまってから列範囲をまとめて入れ替える方が簡単かも知れません。
こちらなら、まとめて処理できるので、一回の入れ替えで済みます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
昔のあなたへのアドバイス
過去のあなたへ一度だけアドバイスを送れる電話があったとします。 もしあなたがその電話を手にしたら、いつの自分にどのようなアドバイスを送りますか?
-
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
-
4
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
5
エクセルVBAでデータ転記
Visual Basic(VBA)
-
6
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
7
引数に数値、文字列の混在
Visual Basic(VBA)
-
8
VBA
Visual Basic(VBA)
-
9
VBA UserFormからの転記で
Visual Basic(VBA)
-
10
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
11
マクロについて教えてください。 下記のマクロは以前教えて頂いたマクロです。 マクロを実行すると 指定
Visual Basic(VBA)
-
12
エクセルファイルのデータ転記について
Visual Basic(VBA)
-
13
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
14
ゆっくりムービーメーカーのエクセルVBAマクロがうごかない
Visual Basic(VBA)
-
15
excelのVBAで画像の動作をさせるため、プログラムを教えてください。
Visual Basic(VBA)
-
16
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
17
エクセルvbaについて
Visual Basic(VBA)
-
18
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
19
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
20
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 2つの表の並べ替え
-
エクセルVBA intersect colu...
-
Cellsのかっこの中はどっちが行...
-
VBAで指定範囲内の空白セルを左...
-
VBAで10行おきにセルの下に罫線...
-
VBAを用いて条件付きの平均値、...
-
【Excel VBA】 B列に特定の文字...
-
VBA 何かしら文字が入っていたら
-
難問 VBA 今日の日付より前に対...
-
データグリッドビューの一番最...
-
VBAを使って検索したセルをコピ...
-
エクセルで結合セルがあるため...
-
列の順番を入れ替えて吐き出
-
VBAの初心者なのですが、「並び...
-
C# dataGridViewの値だけクリア
-
エラーコード1004
-
DataGridViewへ列の追加と、デ...
-
B列の最終行までA列をオート...
-
Excel 複数列から語句を含む行...
-
VBAでのリスト不一致抽出について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
URLのリンク切れをマクロを使っ...
-
データグリッドビューの一番最...
-
文字列の結合を空白行まで実行
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
IIF関数の使い方
-
VBAを使って検索したセルをコピ...
-
VBAの構文 3列置きにコピーし...
-
Changeイベントでの複数セルの...
-
VBAのFind関数で結合セルを検索...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
VBAでのリスト不一致抽出について
-
セルに値が入っていた時の処理
-
VBAコンボボックスで選択した値...
おすすめ情報
すみません
tmp = x(i, n)
x(i, n) = x(i, m)
x(i, m) = tmp
なんとなくは わかりますが、
n m に何かいれればよいのですか
例えばB列とC列を入れ替える
こんなところなんですが
わりません
arr = Array("C", "B")
For i = LBound(arr) To UBound(arr)
arr1(i) = Columns(arr1(i)).Column
Next
検索でてて来ましたが、
配列でやりたのです なんとかなりませんでしょうか
Worksheets.Add
ActiveSheet.Next.Activate
With ActiveSheet
.Columns(2).Copy .Previous.Range("A1")
.Columns(4).Copy .Columns(2)
.Previous.Columns(1).Copy .Columns(4)
Application.DisplayAlerts = False
.Previous.Delete
Application.DisplayAlerts = True
End With