質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

1178閲覧

VBAデータ転記 クロス抽出

syoshinnsya

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2018/10/05 07:37

編集2018/10/09 01:59

VBA初心者です。
お知恵をお願いします。

EXCELシートのデータを別のシートに転記したいのですが
条件があり悩んでおります。

1. 1枚目のシートから抽出したデータを別のシートに転記。
その際1枚目の行と列がクロスするカラムの値を別のシートに転記出来る
様にする事、ただし、別のシートがどの様なカラムの構成で出来るかは
不明確であるかあら範囲指定などではなく1枚目のシートでクロスしたカラム(行と
列)から紐づいて抽出すること。

とあるのですが可能なのでしょうか。

抽出したデータが数字の場合はただの数字でしかないと思うのですが、、、。イメージ説明

回答をして頂いた皆様ありがとうございます。
作業依頼をしてきた者と先刻、話が出来ましたので詳細が分かりましたので再度
ご相談させて頂きます。

イメージ説明

画像は簡単なイメージです。
シート1に記載してある内容をシート2に転記させる際にシート1とシート2の
カラムの位置が移動している場合にでも位置情報のような物(アドレス??)から
導出し、それを基にシートが変わっても転記出来るようにしてほしいとの事でした。

申し訳ございませんがお知恵をお貸しくださいませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/10/05 08:44

転記する対象はどうやって指定しますか?もしかして表の内部を全件移すのですか?
syoshinnsya

2018/10/05 09:10

シーン1でe6の部分(緑)を1としているのですがシート2のe6の部分に転記させたいのですが
guest

回答2

0

>アドレスというのは勉強不足でした。転記先のシートに転記前のシートと同じアドレスがある場合のみ入力という事も可能でしょうか?

可能かとおもいますが、
シート1とシート2の黄色の部分と青色の部分をアドレスと言われているようですが、
画像が不鮮明で良くわかりません。
シート1とシート2の黄色の部分と青色の部分が明瞭に見えるように、再提示していただけませんでしょうか。

投稿2018/10/05 15:23

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

可能です。

抽出したデータが数字の場合はただの数字でしかないと思うのですが、、、。

とのことですが、抽出した「値」だけではなく、「どのセルから抽出したのか」に注目してください。
抽出対象セルの1列目(黄色)と1行目(青色)をみればアドレス(って言うと語弊があるけど)が取得できますよね。
そのアドレスをもとに2シート目の転記先を決めて、値をセットすればいいと思います。

投稿2018/10/05 09:29

kobac

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syoshinnsya

2018/10/05 11:06

アドレスというのは勉強不足でした。転記先のシートに転記前のシートと同じアドレスがある場合のみ入力という事も可能でしょうか?
kobac

2018/10/10 01:45

回答遅くなりスミマセン。 アドレスという言い方をしてしまって混乱させてしまったかもしれませんが 画像で青と黄色に塗られているところの情報を参照してほしいという意図でした。 本来アドレスというのは「ActiveCell.Address」で取得できる、Excelの行列情報なので勉強してみてください。 今回のご質問についてですが 例えば転記したいセルがActiveCell(選択中セル)だとすると Cells(ActiveCell.Row, 1).Value で行番号(青)が Cells(1, ActiveCell.Column).Value で列番号(黄色)がわかります。 その行番号・列番号をSheet_2で検索すると、どこに転記すればいいか決まるはずです。 「同じアドレスがある場合のみ入力可」となると Sheet_1に入力があったタイミングでSheet_2に転記先が存在するか確認し、 存在しなければSheet_1を入力前に戻すような処理が必要になります。 「Changeイベント」「Application.Undo」などで調べてみてください。
syoshinnsya

2018/10/10 08:12

回答ありがとうございました。 更に面倒そうな事を指示されたましたので 一度どの様な事を行えばいいのかを順序だてて考えてみたいと思います。 無知なものでお恥ずかしいのですが、マクロの記録というもので自分が行っている 行動を記憶してみましたが。 Dim As Long等の様なものは記載してなく動いていたのですが条件?定義は行わなくても 良いのでしょうか。 マクロは何でも可能?といいますか勝手に定義付けされるとあったのですが、、、。
kobac

2018/10/10 08:41

指示された、とのことですが業務指示でしょうか。お疲れ様です。 マクロの記録すら「やってみた」レベルの初心者なのであれば即完成させるのは大変かもしれません。 業務なのであれば外注してしまった方が良いかと。フリーランスなどに頼めばアッサリできる内容だと思います。完成品のソースコードを見ても勉強になります。 Dim~の記述は「変数の宣言」というのですが、おっしゃる通りVBAでは書かなくてもエラーにはなりません。 ただし、プログラムの内容がわかりにくくなったり、間違いに気づきにくくなるので、必ず書くようにした方がいいです。 Option Explicit というのをプログラムの一番上(SUB~よりも上)に書いておくと、変数の宣言を忘れたり間違ったときにコンパイルエラーというエラーを出して注意喚起してくれる(=ミスに気付ける)ので、盲目的にOption Explicit を書いておく癖をつけてください。 例えば Dim age AS Long として変数「age」を宣言したのに、プログラムの途中で「agee」なんてタイプミスしてしまった場合に、Option Explicit を書いていればすぐに気付けます。 これがOption Explicit が無いと気付きにくいですし、さらにDim も書かないと「agee」は「age」の間違いなのか、それとも「agee」という別の変数なのか、全くわからなくなります。
syoshinnsya

2018/10/11 00:12

返信ありがとうございます。 外注の事も考えて仕様書の作成を行いましたがマクロ位自分で行えるだろうという感じでした。 確か自分で出来ない事に問題があるのは分かっています。 期限と要望がコロコロ変わるので正直外注は難しいと思われます。 そもそも基データを変更(カラム事に分類し、規則性を持たせる)して良ければもっと楽に作業できると思うのですが、、、。 本当に恥ずかしいのですが、色々VBAの本を読みすぎて混乱しており VBAはプログラムではどれに近いというか類似されるのでしょうか。 VB=Visual BasicということはBASIC言語の構成と類似なのでしょうか?
kikukiku

2018/10/11 00:33

外注が難しいようであるならば、社内のExcelマクロに精通している人にお願いするか、自身でがんばるかになりますね。自身で頑張る場合、納期が問題になります。充分な納期調整をする必要があるでしょう。ちなみにExcelVBAの学習で良く参照しているサイトを紹介しておきます。わたしもここで一から勉強しなおしました。良かった使ってみてください。https://excel-ubara.com/excelvba1/
syoshinnsya

2018/10/11 00:41

コメントありがとうございます。 早速拝見させていただきます。 納期が非常に短いので周囲は最悪リンク張っとけばと言っているのが現状です。 流石に数百もリンクを作成するのは効率が悪いので避けたいと思っております。
kikukiku

2018/10/11 00:57

納期が短いのですね。うーん、厳しいですね。社内でわかる人捜して、教えてもらうのが早いかと思います。頑張ってください。
kobac

2018/10/11 03:20

「マクロくらい自分で~」と言っても、実現したい機能はマクロの自動記録は超えているので、安易に考えずプログラム開発と思って外注するなり、腰を据えて勉強するなりしてください。 期限や仕様がコロコロ変わるようでは、自作でも難しいのは変わりません。 開発内容を上司?顧客?と話し合って一旦確定させ、その後追加要望や変更が出るのであればそれは2次開発に回すことにして、まずは最初に決めた内容で一度完成させるような進め方をお勧めします。 なおVBAとVBは祖先は同じですが、どちらかにしか無い機能も多々あります。 今の質問者様の状況では他言語に手を広げても混乱するだけだと思いますので、まずはVBAに集中して勉強をがんばってください。 元々のご質問から大分話がそれてしまっているので、ここまでとさせていただきます。 勉強してみてわからないことがあれば、また新たに質問投稿してください。
syoshinnsya

2018/10/11 04:35

コメントありがとうございます。 とりあえずマクロの自動記録をプログラムで実行出来るようにしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問