- 締切済み
エクセルフォームを使ってのデータ集約化について悩んでます。
imogasiの回答
- imogasi
- ベストアンサー率27% (4737/17068)
仕事の課題を丸投げしているに近い。このコーナーは丸投げ禁止のはず。 一表にまとめる課題は、VBAの経験を積むしかない。 しかし、もしVBAの本も読んでいないような人なら、作れるわけが無い。 一応1つのやり方を書いておく。 シートを挿入して、名前をつける(累積表とする) ーーー シートをすべて捉える Sub test01() Dim sh As Worksheet For Each sh In Worksheets If sh.Name <> "累積表" Then MsgBox sh.Name '本来ここへ処理が来る End If Next End Sub ーーー 処理のメインは各シートをコピーして、累積表に順次貼り付けること。 Sub test01() Dim sh As Worksheet For Each sh In Worksheets If sh.Name <> "累積表" Then MsgBox sh.Name sh.Range("a1").CurrentRegion.Copy Worksheets("累積表").Range("A5") End If Next End Sub これだと累積表最後のシートを中心にしてしか、残らない。 ").Range("A5")をその時どきの最終行+1を指すように変えればよい。 それと見出し行は累積範囲から除く必要がある。 累積表第1行には、見出しだけは貼り付けて置いてください。 結果 Sub test01() Dim sh As Worksheet Dim cntRow As Integer Dim cntCol As Integer Dim Rng As Range For Each sh In Worksheets If sh.Name <> "累積表" Then MsgBox sh.Name d = Worksheets("累積表").Range("A65536").End(xlUp).Row MsgBox d Set Rng = sh.Range("A1").CurrentRegion If Rng.Rows.Count < 2 Then GoTo p01 '見出しのみ cntRow = Rng.Rows.Count - 1 cntCol = Rng.Columns.Count Set Rng = Rng.Offset(1) '※一行ずらす Set Rng = Rng.Resize(cntRow, cntCol) '※一行削る Rng.Copy Worksheets("累積表").Range("A" & (d + 1)) End If p01: Next End Sub ======= >エクセルフォームを使って フォームという言葉は、注意して使ってほしい。 (1)メニューのデーターフォームのフォーム (2)ユーザーフォームのフォーム。VBのフォーム (3)一般的な意味で、様式のあるコンピュタ帳票画面や印刷画面 (4)印刷物(コピー)で様式のある、コンピュタで印刷する帳票の内容白紙の用紙 質問では(3)かと思う。 しかし質問の内容ぐらいでは、(わざわざフォームといわず)エクセルのシートとかエクセルの表とかエクセルのデータがあります、でよいと思う。小生など(2)をまず思う。 ======= >重複や欠落が無く一本にする方法はありますか 同時にやる方法は、上記のような全行一括してコピー・貼り付けのコピーメソッドを使うロジックでは出来ない。 累積完了後にそういう処理をすることになる。 元シートから1行1行、累積表に値を代入する方式を採るときは、重複をチェックしていくロジックを入れれば、出来ないことではないが。 重複排除は、操作(フィルタオプションの設定)や関数でも出来る。 >データが未入力となる行や列は変動する為、当該行や列を的確に選択する必要があります。 変動するなど当たり前の話。書く必要なし。的確とは。コンピュタ処理では的確は当たり前。書く必要なし。 未入力行も累積の時に考えるのでなく、累積してからチェックするなり削除する(ただし削除は賢明でないと思う、集ったデータは出来るだけ残す。本来問い合わせでもして、補充するのが担当者の役目?) 処理は出来るだけ別のステップに分ける方が良い。チェックしながら 集積するというやり方コードの作り方は、特に初心者には勧めない。
関連するQ&A
- エクセルで質問です。
エクセルで質問です。 sheet1に A B C D 1 No. グループ 氏名 住所 2 3 1 C 佐藤 東京 4 2 B 鈴木 埼玉 5 3 A 加藤 千葉 6 4 B 本多 東京 このようなデータがたくさんあります。(左の数字は行番号、上のアルファベットは列番号) これを別シートにグループ順に A B C D 1 No. グループ 氏名 住所 2 3 1 A 加藤 千葉 4 2 B 鈴木 埼玉 5 3 B 本多 東京 6 4 C 佐藤 東京 と表示させる方法はありますか。 エクセルに詳しくないのですが どなたか助けていただければと思います。
- ベストアンサー
- その他(インターネット・Webサービス)
- エクセルで質問です
エクセルで質問です。 sheet1に A B C D 1 No. グループ 氏名 住所 2 3 1 C 佐藤 東京 4 2 B 鈴木 埼玉 5 3 A 加藤 千葉 6 4 B 本多 東京 このようなデータがたくさんあります。(左の数字は行番号、上のアルファベットは列番号) これを別シートにグループ順に A B C D 1 No. グループ 氏名 住所 2 3 1 A 加藤 千葉 4 2 B 鈴木 埼玉 5 3 B 本多 東京 6 4 C 佐藤 東京 と表示させる方法はありますか。 sheet1には都度入力されるので、並べ替えなどではなく vlooupとか関数の活用で何とかならないものでしょうか。 エクセルに詳しくないのですが どなたか助けていただければと思います。
- ベストアンサー
- その他(インターネット・Webサービス)
- excelVBA 項目ごとに連番をふりたい
よろしくお願いします。 excelで連番を振りたいのですが、隣のセルに並んでいる 項目ごとに振りたいのです。VBAでできるでしょうか? 番号を振りたいのはB列で、名前ごとに1から順番に番号を 振りたいです。名前が変わるとまた1に戻って、振っていき、 A列がなくなると終了です。 A列の名前の数や、それぞれのデータ数、 全体のデータ数などは、ばらばらです。 もしかしたら列数はかわるかも知れませんが、 隣の列の項目ごとに番号を1から振る、ということは 変わりません。 (A列) (B列) 山田 1 山田 2 山田 3 田中 1 田中 2 田中 3 田中 4 佐藤 1 佐藤 2 加藤 1 斎藤 1 斎藤 2 斎藤 3 斎藤 4 斎藤 5 ・ ・ ・ ・ ・ ・ 今は目で見ながら毎日、オートフィルタでがんばっています。 これができるとすごくうれしいです。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- (エクセル)日付に相当するデータを入力する
シート1に以下のように、A列には氏名、C列に日付がランダムに入力されています。 A B C 1 山田 4/4 3:00 2 佐藤 4/3 2:00 3 石井 4/4 3:00 4 加藤 4/3 2:00 5 田中 4/1 5:00 シート2に上から順位に並び替えたいです A B C D E F G 1 4/1 4/2 4/3 4/4 4/5 2 1 田中 4/1 5:00 3 2 佐藤 4/3 2:00 4 3 加藤 4/3 2:00 5 4 山田 4/4 3:00 6 5 石井 4/4 3:00 1行目のC~Gには既に4/1~4/5が入力されています。 対応するところに日付を入力し、さらにB列には氏名を表示したいです。 C2には「=IF(AND(SMALL(Sheet1!$C$1:$C$5,$A2)<D$1,SMALL(Sheet1!$C$1:$C$5,$A2)>=C$1),SMALL(Sheet1!$C$1:$C$5,$A2),"")」としてうまくいきました(C1:F6も同様)。 問題はB列なのですが、B2に「=INDEX(Sheet1!$A$1:$A$5,MATCH(SUM(C2:G2),Sheet1!$C$1:$C$5,0))」や「=INDEX(Sheet1!$A$1:$A$5,MATCH(SMALL(Sheet1!$C$1:$C$5,A2),Sheet1!$C$1:$C$5,0))」としても同じ失敗結果になりました。 両方とも、上から順に 田中 佐藤 佐藤 ←失敗(加藤が正解) 山田 山田 ←失敗(石井が正解) となってしまい、重複する日付が失敗してしまいます。 B列にどのようにしたら良いか教えてください。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- ユーザーフォームに入力したデータとリストを照合
お世話になります。 A列に番号、B列に名字、C列に名前が入力されています(500近いデータがあり、データ量は増減あり) 例 A列 B列 C列 1 阿藤 海 2 加藤 山 3 木村 一 4 齋藤 十三 5 佐藤 まさる ・ ・ ・ 最終行 渡辺 慎吾 ユーザーフォームを使い、名字と名前(2つのテキストボックスに別々に)を入力すると、リストからその人が何番なのか(A列の番号)を教えてくれるようにしたいと思っています。 そういったことは可能でしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- エクセルで別シートを参照していて、参照元のデータを変更した場合
エクセルで別シートを参照したいのですがうまくいきません。 (1)Sheet1には顧客データが入っています。 【Sheet1】 A B C 1 氏名 住所 性別 2 小川 東京 男 3 佐藤 大阪 女 4 鈴木 福岡 女 (2)Sheet2ではSheet1の顧客データの一部+獲得ポイントのデータが入っています。Sheet2のA列とB列に「=Sheet1!A2」とういう風に関数を入れてSheet1を参照しています。C列~は手入力でデータを入力しています。 【Sheet2】 A B C D 1 氏名 住所 12/1 12/15 2 小川 東京 1 5 3 佐藤 大阪 1 5 4 鈴木 福岡 1 5 (3)Sheet1に新たに顧客情報を入れますが、氏名は五十音順にしたいので行を挿入して入力します。(行3に加藤さんを入れました) 【Sheet1】 A B C 1 氏名 住所 性別 2 小川 東京 男 3 加藤 沖縄 男 4 佐藤 大阪 女 5 鈴木 福岡 女 (4)私の希望としては、(3)をしたらSheet2は↓のようになってほしいのですが、実際には(2)の状態のままです。 【Sheet2】 A B C D 1 氏名 住所 12/1 12/15 2 小川 東京 1 5 3 加藤 沖縄 4 佐藤 大阪 1 5 5 鈴木 福岡 1 5 (5)Sheet1の変更結果をSheet2に反映することは無理なのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Excelでのセルの検索
セルの検索方法について、質問します。 現在の表 A B C D --+-------+-------+-------+-------+------+-------+------- 1 鈴木 加藤 斎藤 --+-------+-------+-------+-------+------+-------+------- 2 佐藤 清水 --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3 山田 --+-------+-------+-------+-------+------+-------+------- 理想形 A B C D --+-------+-------+-------+-------+------+-------+------- 1 鈴木 加藤 斎藤 斎藤 --+-------+-------+-------+-------+------+-------+------- 2 佐藤 清水 清水 --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3 山田 山田 --+-------+-------+-------+-------+------+-------+------- 上記のような表(現在の表)で、D列に空白セル以外の一番右のセルを探して表示できるような関数を探しているのですが?。 仕事で進捗表の作成を行っており、困っていますのでよろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル 複数行にまたがっているデーターを一つの行にまとめたい
A列 B列 C列 1行目 佐藤 北海道 りんご 2行目 佐藤 北海道 ばなな 3行目 伊藤 東京 いちご 4行目 伊藤 東京 ばなな 上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが A列 B列 C列 1行目 佐藤 北海道 りんごばなな 2行目 伊藤 東京 いちごばなな A列とB列のデーターが同じでC列のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。
- ベストアンサー
- オフィス系ソフト
- Excel VBA 空白セル以下のデータを繰り上げるには?
Excel2003で、従業員データを管理する表を作成してます。 B列~AC列まで、1行づつ個人のデータがあります。 例えば、4(任意)行目の人が退社した場合、4(任意)行目のデータのみデータクリア(B4~AC4)するVBAを組みましたが、自動的に5行目~のデータを繰り上げるのは可能でしょうか。 A列やAD列以降に管理番号などが入力されている(そのままにする)のと このシートを他のシートが参照しているので Rows.Delete で行ごと削除して繰り上げるわけにいかず悩んでます。 A B C D・・ AC AD AF・・ 1 業者(1) 氏名 住所 TEL 入社年 部署 担当 2 001 阿部 東京 03- 2000 営業 A社 3 002 和田 千葉 04- 1990 営業 A社 4 003 佐藤 秋田 01- 1995 営業 B社 5 004 前田 富山 07- 1998 営業 B社 6 005 今井 新潟 02- 1985 財務 財務 7 006 青柳 東京 03- 1980 財務 財務 8 007 鈴木 千葉 01- 1990 工事 工事 ・ ・ 20 業者(2) 氏名 住所 TEL 入社年 部署 担当 21 001 内藤 東京 03- 2000 営業 A社 ・ ・ こういった表です。よい案がありましたら、宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルのフォームの
エクセルのフォームの テキストボックスの値をエクセルシートに入れていっているのですが フォームを閉じる時に、重複した値のチェックを入れたいのですが A:Bの列でチェックしたい項目が2つあって、どちらも満たしたときに エラーメッセージを出したいのですが、本を見ても載っていないので 質問させていただきました。 列Aは番号 列Bは氏名です。 A B 1001001 山本 2001001 山本 3001001 鈴木 3001010 鈴木 3001001 鈴木 この例だと3001001 鈴木が重複していますので 2回目に入力した分を削除しようとしています。 すみませんがどなたか教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト