C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 【ExcelVBA】コピーした列を交互に貼り付けたい


(過去ログ 168 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■97077 / inTopicNo.1)  【ExcelVBA】コピーした列を交互に貼り付けたい
  
□投稿者/ 工場プログラマー (60回)-(2021/03/24(Wed) 16:16:59)

分類:[.NET 全般] 

win10

うまく説明できるかわかりませんが、
2つのシートから1列ずつコピーして別のシートにまとめたいです。
例)
昨日のデータ列
今日のデータ列
昨日のデータ列
今日のデータ列

こんな感じです。
よろしくお願いします。


引用返信 編集キー/
■97078 / inTopicNo.2)  Re[1]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ 魔界の仮面弁士 (3024回)-(2021/03/24(Wed) 16:41:28)
No97077 (工場プログラマー さん) に返信
> 【ExcelVBA】コピーした列を交互に貼り付けたい
> 分類:[.NET 全般] 

[.NET 全般] に関する質問では無いのですよね?

VBA の質問の場合は、[Microsoft Office 全般] を選択しておいてください。
あるいは言語仕様からすると、個人的には [VB6 以前] でも良い気がします。

ただ VBA7.1 って VB6 よりも後にリリースされた言語なんですよね…。


> 2つのシートから1列ずつコピーして別のシートにまとめたいです。
> 例)
> 昨日のデータ列
> 今日のデータ列
> 昨日のデータ列
> 今日のデータ列

[昨日]シート Sheet1、
[今日]シート Sheet2
別のシート Sheet3

があったとして…

Sheet3 の A列 … Sheet1!A1:A1000
Sheet3 の B列 … Sheet2!A1:A1000

ではなく、

Sheet3 の A1セル … Sheet1!A1
Sheet3 の A2セル … Sheet2!B1
Sheet3 の A3セル … Sheet1!A2
Sheet3 の A4セル … Sheet2!B2
Sheet3 の A5セル … Sheet1!A3
Sheet3 の A6セル … Sheet2!B3

にするということですか?
引用返信 編集キー/
■97079 / inTopicNo.3)  Re[1]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ kiku (221回)-(2021/03/24(Wed) 17:39:13)
No97077 (工場プログラマー さん) に返信
> win10
> うまく説明できるかわかりませんが、
> 2つのシートから1列ずつコピーして別のシートにまとめたいです。
> 例)
> 昨日のデータ列
> 今日のデータ列
> 昨日のデータ列
> 今日のデータ列

上記の説明だけでは、まだ具体的にどのようなコピー&ペーストが行いたいのか
わからない部分が多いのでなんとも言えませんが
指定のシートの指定のセルを、別の指定のシートの指定のセルにコピーすることが
できれば、応用できるのではないかと考えました。

下記が参考になりそうですがどうでしょう。
https://excel-ubara.com/excelvba1/EXCELVBA341.html
引用返信 編集キー/
■97084 / inTopicNo.4)  Re[2]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ 工場プログラマー (61回)-(2021/03/25(Thu) 10:25:53)
No97078 (魔界の仮面弁士 さん) に返信

> [昨日]シート Sheet1、
> [今日]シート Sheet2
> 別のシート Sheet3
>
> があったとして…
>
> Sheet3 の A列 … Sheet1!A1:A1000
> Sheet3 の B列 … Sheet2!A1:A1000
>
> ではなく、
>
> Sheet3 の A1セル … Sheet1!A1
> Sheet3 の A2セル … Sheet2!B1
> Sheet3 の A3セル … Sheet1!A2
> Sheet3 の A4セル … Sheet2!B2
> Sheet3 の A5セル … Sheet1!A3
> Sheet3 の A6セル … Sheet2!B3
>
> にするということですか?


説明不足ですいません。
訂正するとこんな感じです。

Sheet3 の A1セル … Sheet1!A1
Sheet3 の A2セル … Sheet2!A1
Sheet3 の A3セル … Sheet1!A2
Sheet3 の A4セル … Sheet2!A2
Sheet3 の A5セル … Sheet1!A3
Sheet3 の A6セル … Sheet2!A3

本当は列参照で

Sheet3 の 1列目  … Sheet1の1列目
Sheet3 の 2列目  … Sheet2の1列目
Sheet3 の 3列目  … Sheet1の2列目
Sheet3 の 4列目  … Sheet2の2列目
Sheet3 の 5列目  … Sheet1の3列目
Sheet3 の 6列目  … Sheet2の3列目

こうしたいです。
データ量少なくはないのでセル指定で貼り付けはあんま考えてないです、すいません。
引用返信 編集キー/
■97086 / inTopicNo.5)  Re[3]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ kiku (222回)-(2021/03/25(Thu) 11:35:56)
No97084 (工場プログラマー さん) に返信
> ■No97078 (魔界の仮面弁士 さん) に返信
> 本当は列参照で
> Sheet3 の 1列目  … Sheet1の1列目
> Sheet3 の 2列目  … Sheet2の1列目
> Sheet3 の 3列目  … Sheet1の2列目
> Sheet3 の 4列目  … Sheet2の2列目
> Sheet3 の 5列目  … Sheet1の3列目
> Sheet3 の 6列目  … Sheet2の3列目

こんな感じでできると思います。

Sheets("Sheet1").Range("A:A").Copy
Sheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteAll
Sheets("Sheet2").Range("A:A").Copy
Sheets("Sheet3").Range("B1").PasteSpecial Paste:=xlPasteAll

引用返信 編集キー/
■97087 / inTopicNo.6)  Re[3]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ 魔界の仮面弁士 (3026回)-(2021/03/25(Thu) 11:52:24)
No97084 (工場プログラマー さん) に返信
> Sheet3 の A1セル … Sheet1!A1
> Sheet3 の A2セル … Sheet2!A1
こっちだと管理しにくいので

> 本当は列参照で
> Sheet3 の 1列目  … Sheet1の1列目
> Sheet3 の 2列目  … Sheet2の1列目
> Sheet3 の 3列目  … Sheet1の2列目
> Sheet3 の 4列目  … Sheet2の2列目
の方が楽かな。


Dim colMax1 As Long, colMax2 As Long
colMax1 = Sheet1.UsedRange.Columns.Count
colMax2 = Sheet2.UsedRange.Columns.Count
Dim col1 As Long, col2 As Long, col3 As Long
col1 = 1
col2 = 1
col3 = 1
Sheet3.Cells.Clear
While col1 <= colMax1 And col2 <= colMax2
    If col1 <= colMax1 Then
        Sheet1.Columns(col1).Copy Sheet3.Columns(col3)
        col1 = col1 + 1
        col3 = col3 + 1
    End If
    If col2 <= colMax2 Then
        Sheet2.Columns(col2).Copy Sheet3.Columns(col3)
        col2 = col2 + 1
        col3 = col3 + 1
    End If
Wend


でもって、

Sheet1の1列目
Sheet1の2列目
Sheet1の3列目
  :
Sheet2の1列目
Sheet2の2列目
Sheet3の3列目
  :

の形式だともっと楽


Sheet3.Cells.Clear
Sheet1.UsedRange.Copy Sheet3.Range("A1")
Sheet2.UsedRange.Copy Sheet3.Cells(1, 1 + Sheet1.UsedRange.Columns.Count)

引用返信 編集キー/
■97088 / inTopicNo.7)  Re[4]: 【ExcelVBA】コピーした列を交互に貼り付けたい
□投稿者/ 工場プログラマー (62回)-(2021/03/25(Thu) 13:05:32)
No97087 (魔界の仮面弁士 さん) に返信
> ■No97084 (工場プログラマー さん) に返信
>>Sheet3 の A1セル … Sheet1!A1
>>Sheet3 の A2セル … Sheet2!A1
> こっちだと管理しにくいので
>
>>本当は列参照で
>>Sheet3 の 1列目  … Sheet1の1列目
>>Sheet3 の 2列目  … Sheet2の1列目
>>Sheet3 の 3列目  … Sheet1の2列目
>>Sheet3 の 4列目  … Sheet2の2列目
> の方が楽かな。
>
>
> Dim colMax1 As Long, colMax2 As Long
> colMax1 = Sheet1.UsedRange.Columns.Count
> colMax2 = Sheet2.UsedRange.Columns.Count
> Dim col1 As Long, col2 As Long, col3 As Long
> col1 = 1
> col2 = 1
> col3 = 1
> Sheet3.Cells.Clear
> While col1 <= colMax1 And col2 <= colMax2
> If col1 <= colMax1 Then
> Sheet1.Columns(col1).Copy Sheet3.Columns(col3)
> col1 = col1 + 1
> col3 = col3 + 1
> End If
> If col2 <= colMax2 Then
> Sheet2.Columns(col2).Copy Sheet3.Columns(col3)
> col2 = col2 + 1
> col3 = col3 + 1
> End If
> Wend
>
>
> でもって、
>
> Sheet1の1列目
> Sheet1の2列目
> Sheet1の3列目
>   :
> Sheet2の1列目
> Sheet2の2列目
> Sheet3の3列目
>   :
>
> の形式だともっと楽
>
>
> Sheet3.Cells.Clear
> Sheet1.UsedRange.Copy Sheet3.Range("A1")
> Sheet2.UsedRange.Copy Sheet3.Cells(1, 1 + Sheet1.UsedRange.Columns.Count)

ありがとうございます。
助かりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -