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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 空白行も含めてソートしたい 3 2022/02/01 23:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) 【マクロ】book1からbook2への適切な転記が出来ない件 2 2023/11/08 17:23
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
特定文字を入ってるCSVの特定の列を特定のexcelシートに取り込みたいです
Visual Basic(VBA)
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
VBA
Visual Basic(VBA)
-
-
4
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
5
A列B列どちらにもあるのを抽出する
Visual Basic(VBA)
-
6
VBA コード
Visual Basic(VBA)
-
7
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
8
VBAのことで質問です
Visual Basic(VBA)
-
9
Excelセルに入力された文字の色を変える方法を教えてください
Visual Basic(VBA)
-
10
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
11
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
12
郵便番号検索APIにてget ElementByTagNameでうまくを取得できない
Visual Basic(VBA)
-
13
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
14
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
15
エクセルVBAでデータ転記
Visual Basic(VBA)
-
16
マクロVBAについてご教授いただけましたらと存じます。
Visual Basic(VBA)
-
17
一つのフォルダーに50個のエクセルファイルがあります。 各ファイルにはAとBのシートがあります。 5
Visual Basic(VBA)
-
18
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
19
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
20
ExcelのVBAコードを教えて頂けますでしょうか。 例シート2つがあります。 シート1は元データ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA指定行削除
-
B列の最終行までA列をオート...
-
VBAで10行おきにセルの下に罫線...
-
Cellsのかっこの中はどっちが行...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
VBAの初心者なのですが、「並び...
-
Excel VBA 足し算の問題を自動...
-
Excel VBA の件で質問です
-
難問 VBA 今日の日付より前に対...
-
空文字 "" ですが 空文字の意味...
-
エクセルについて
-
エクセル VBA 条件にあうセルの...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
グリッドの列の最大値を求めたい。
-
エクセルVBAにて =A1=B1とすれ...
-
マクロ 最終列をコピーして最終...
-
【補足欄が足りなかったため、...
-
エクセルVBAで複数の条件を満た...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
文字列の結合を空白行まで実行
-
VBAのFind関数で結合セルを検索...
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報
すみません
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