VBA初心者です。
入門書などで勉強中ですが、手に負えません。
助けてください。
A B C
名前 体重 分類
1ニワトリ ○ 鳥
2ヒラメ ■ 魚
3スズメ △ 鳥
4インコ ▼ 鳥
5タイ ◇ 魚
6イワシ ◆ 魚
というような入力シートの表があります。(下にたくさん続きます)
このデータを分類別にしてワークシートを作成しています。
そこで、次のようなVBAを書きたいのです。
VBAを実行すると、
別シートに分類別に入力表のデータが振り分けられて、
魚がA,B列
A B
名前 体重
1ヒラメ ■
2タイ ◇
3イワシ ◆
鳥がD,E列
D E
名前 体重
1ニワトリ ○
2スズメ △
3インコ ▼
と入力シートに入力されたデータが振り分けられるものです。
どうか、よろしくご指導お願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
1、2次元配列、分類(x)、名前(x、y)、体重(x、y)等としてデーターを入力すれば、処理できると思います。
xは分類の数、yは名前の数。入力シートのデーター1行読み込み
分類が、同じ
名前が違う
データー代入
名前が同じ
何もしない
分類が、違う
分類、名前、体重データー代入
入力データー読み込みに戻る (繰り返し)
全データー 読み込んだら終わり
データーを、シートに表示
面倒ですが、こんな流れではどうでしょう?
No.4
- 回答日時:
こんばんは!
VBAでないので参考にならなかったら読み流してください。
色々方法はあるかと思いますが、
↓の画像のような感じでやってみました。
左側が元データのSheet1で、それを右側のSheet2に振り分けるようにしています。
作業用の列を使っていないので配列数式になってしまいます。
とりあえず元データが1000行まで対応できる数式にしていますが、
範囲指定等はデータ量によってアレンジしてみてください。
Sheet2のA3セルに
=IF(COUNTIF(Sheet1!$C$2:$C$1000,$A$1)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$1000,SMALL(IF(Sheet1!$C$2:$C$1000=A$1,ROW($A$1:$A$999)),ROW(A1))))
この画面からそのままコピー&ペーストしてしまうとエラーになると思いますので
A3セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックします。
編集可能になりますので、
Shift+Ctrl+Enterキーで確定します。
そうすると数式の前後に{ }マークが入り配列数式になります。
そして、B3セルに
=IF(A3="","",VLOOKUP(A3,Sheet1!$A$2:$B$1000,2,0))
(これは配列数式ではありません。)
A3・B3セルを範囲指定し、B3セルのフィルハンドルでD3セルまでオートフィルでコピーします。
最後にそのD3セルのフィルハンドルで下へコピーすると
画像のような感じになります。
以上、長々と書きましたが
参考になれば幸いです。
他に良い方法があれば読み流してくださいね。m(__)m
No.3
- 回答日時:
参考になりそうなページを紹介します。
がんばって応用してみてください。
たくさんのヒントが得られると思いますよ。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
No.2
- 回答日時:
勉強法のアドバイス。
とりあえず手でそのマクロを記録してソースをみる。
↓
わからないとこがあったらヘルプのMEVBリファレンスを見て調べる。
これを繰り返せばいつかできる。
ぱっと見た感じ思いつくのは 値の入ったセル範囲をセレクト→魚でオートフィルタ→コピー → 貼り付け先に貼り付け → 鳥も同様に。
あるいは、分類の列をdo until ""(空白セル) で一セルごと下へループ。もしアクティブセルが魚だったら貼り付け先へ貼り付けて一つ下のセルをアクティブにして元のシート戻る 魚終わったら鳥へっていう地道なやつでもいいし。
No.1
- 回答日時:
文章だけでは条件が不十分です。
魚、鳥、獣、爬虫類の5分類しかないと決まっていて順番もこの通りにします。
という場合と
データを読みながら新しい分類が出たら新しい列を用意する場合(この場合順番は出現順になる)。
で処理がかなり異なります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Outlook で宛先が複数の場合の人数
-
【スプレッドシート】指定の日...
-
Microsoft Formsの「個人情報や...
-
Microsoft Edgeの「ニュースと...
-
VLOOKUP関数について
-
【Excel VBA】PDFを作成して,...
-
エクセルでXLOOKUP関数...
-
outlookのメールが固まってしま...
-
teams設定教えて下さい。 ①ビデ...
-
Microsoft365で写真をアルバム...
-
Microsoft Officeに似たキング...
-
会社におけるOfficeライセンス...
-
【スプレッドシート】白色のセ...
-
Excel VBA 日程表からスケジュ...
-
VBAファイルの保存先について
-
エクセル、ワード、ネット検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
Microsoft Formsの「個人情報や...
-
officeビジネス型のワードやエ...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
Microsoft Officeを2台目のPCに...
-
何このステータスバー
-
2つのシートの一致する行のセ...
-
会社のTeamsのことで相談です。...
-
エクセルにリンクされるのをし...
-
Windows 11で、IME言語バー(IM...
-
office2010とoffice365の共存で...
-
Microsoftのパソコンです。 エ...
-
エクセルでXLOOKUP関数...
-
Excel関数について質問ですm(__)m
-
VBA
-
自分の専門分野の仕事。初見で...
おすすめ情報