エクセルでデータベースみたいなのを作りました。
委託先からのデータの必要な部分だけ取り出す。というものですが、
今度は、その必要なデータの必要なレコードに新たにデータを追加する作業が起きました。
データは従業員のもので、E列が社員番号、J列が氏名で、最終データがELB列まで使っています。
社員番号から個人のレコードを抽出して、ELC列とELD列に判定テキストを入力したいのです。
ELC「○○」、ELD「評価者××」という具合です。
エクセル画面で社員番号を確認しながら、ELC列にコメントを書いていくなんて、
時間がかかりすぎるし、間違いやすいので、どうにかならないかと考えています。
エクセルをアクセスのようにして入力することもできたと思いますが、
その方に良い方法がありましたら、詳しい方教えて下さい。
今後も追加するデータが出てくるかも知れないので、汎用性のある方法でお願いします。
No.1
- 回答日時:
ユーザーフォームに入力してシートに転記
https://kokodane.com/macro31.htm
データベース的な物を作成されたのなら使用されてませんか?
どこのセルに代入させるかはコードで行ない、作業者自身が触る事なく出来るようにする。
個数を増やせば汎用が効くのではないかなと。
ありがとうございました。
委託先は専用ソフトを使用しており、自社のデータをエクセルに落としたものを受け取っています。
そこで自社データを追記するのですが、E列の社員番号から、J列の社員名を確認して、ELC列以降にコメントを入れたいのです。
単なるレコードの追加ではなく、対象を呼び出して追記する形です。
No.2
- 回答日時:
>対象を呼び出して追記する形です。
セル値の検索(例:Findメソッド)方法はありますし、
>J列の社員名を確認して、ELC列以降にコメントを入れたいのです。
追記?
検索した結果FindメソッドであればRangeオブジェクトが得られる(見つかればですが)ので行番号はわかるかと。
あとは列に対して入れたい値をユーザーフォームのTextBox(数個)に打ち込んだ物を順次代入すれば良いかと感じたのですが・・・
No.3
- 回答日時:
こんにちは
正確な状態がさっぱりわかりませんけれど・・・
社員番号に対応するELC列(?)に何かを入力したいのだと解釈しました。
元データが既にデータとして存在するのか、手入力で一つ一つ入力するつもりなのかも不明ですが・・・
1)まず、入力内容だけを、データとして別シートにでも一覧的に表にします。
2)転記したい(=実際に入力したい)列に、関数で検索して表示させます。
3)対象列を選択して「コピー」-「値をペースト」で固定値化します。
以上で、人間が検索する手間はなく可能と思います。
No.4
- 回答日時:
こんばんは
良い方法かは分かりませんが
VBAが使える環境ならVBAで処理をするのが簡単かな
① 1シート追加しておきます 仮称 追加設定シート
これは条件を書き込むシートで他のファイルなどからコピペするなどで使う?
② 処理をするシート >エクセルでデータベースみたいなのを
仮称 データベースシート
振り分け条件など、詳細が分ればすべて自動化できると思いますが・・
取り合えず
①の表組 図
①のシートにボタン設置
VBAプロシージャ (標準モジュール)をボタンに登録
Sub sample_01()
Dim データベース As Worksheet
Dim 追加設定シート As Worksheet
Set dSht = Worksheets("データベース")
Set sSht = Worksheets("追加設定シート")
Dim employee_number As Range
Dim getCell As Range
Dim colm1 As String, colm2 As String
colm1 = sSht.Range("B1").Value
colm2 = sSht.Range("C1").Value
If colm1 = "" Or colm2 = "" Then MsgBox "列を指定してください": Exit Sub
For Each employee_number In sSht.Range("A3", sSht.Cells(Rows.Count, "A").End(xlUp))
Set getCell = dSht.Range("E1", dSht.Cells(Rows.Count, "E").End(xlUp)) _
.Find(What:=employee_number.Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not getCell Is Nothing Then
With employee_number
If .Offset(, 1) <> "" Then dSht.Cells(.Row, colm1).Value = .Offset(, 1).Value
If .Offset(, 2) <> "" Then dSht.Cells(.Row, colm2).Value = .Offset(, 2).Value
End With
End If
Next
End Sub
No.5
- 回答日時:
ごめんなさい
Dim データベース As Worksheet
Dim 追加設定シート As Worksheet
を
Dim dSht As Worksheet
Dim sSht As Worksheet
に書き換えてください
No.6
- 回答日時:
大変申し訳ありません
デバッグせず投稿してしまいました
めちゃくちゃになってしまいましたが
VBAコードは下記に書き換えてください
Sub sample_01()
Dim dSht As Worksheet
Dim sSht As Worksheet
Set dSht = Worksheets("データベース")
Set sSht = Worksheets("追加設定シート")
Dim employee_number As Range
Dim getCell As Range
Dim colm1 As String, colm2 As String
colm1 = sSht.Range("B1").Value
colm2 = sSht.Range("C1").Value
If colm1 = "" Or colm2 = "" Then MsgBox "列を指定してください": Exit Sub
For Each employee_number In sSht.Range("A3", sSht.Cells(Rows.Count, "A").End(xlUp))
Set getCell = dSht.Range("E1", dSht.Cells(Rows.Count, "E").End(xlUp)) _
.Find(What:=employee_number.Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not getCell Is Nothing Then
With employee_number
If .Offset(, 1) <> "" Then dSht.Cells(getCell.Row, colm1).Value = .Offset(, 1).Value
If .Offset(, 2) <> "" Then dSht.Cells(getCell.Row, colm2).Value = .Offset(, 2).Value
End With
End If
Next
End Sub
No.7ベストアンサー
- 回答日時:
>エクセル画面で社員番号を確認しながら、ELC列にコメントを書いていくなんて、時間がかかりすぎるし、間違いやすいので、どうにかならないかと考えています。
社員番号で検索すれば、即時に表示できると思いますが、
【検索】機能では何か不都合があるのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
エクセルで1列に500行並んだデ...
-
複数の条件に合う行番号を取得...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
エクセル2016にて、行挿入&コピ...
-
Excelで2つのデータの突合せを...
-
Excelの30個ずつの平均値の出し方
-
500行の中から、多い順に抽出す...
-
エクセルVBA C列に特定の文字列...
-
VBA 数式を最終行までコピー
-
エクセルで1つの会社名に対して...
-
【Excel】フィルタの実行で重複...
-
EXCELである範囲内での最大値の...
-
VBA 大きなtxtテキストファ...
-
Countifよりも早く重複数をカウ...
-
Excelで社員の本名をニックネー...
-
エクセルで沢山のレコードの最...
-
エクセルデータの比較をしたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
エクセルで1列に500行並んだデ...
-
複数の条件に合う行番号を取得...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
Excelの30個ずつの平均値の出し方
-
エクセルで、重複データを除外...
-
Excelで2つのデータの突合せを...
-
Countifよりも早く重複数をカウ...
-
VBA 数式を最終行までコピー
-
エクセルで1つの会社名に対して...
-
エクセル2016にて、行挿入&コピ...
-
エクセルで横並びの複数データ...
-
エクセルVBA C列に特定の文字列...
-
VBA 大きなtxtテキストファ...
-
エクセル~空白のセルのある行...
-
500行の中から、多い順に抽出す...
-
不要な行を消したい
-
本日の日付を超えているものを...
-
【Excel】小計単位で並べ替えを...
おすすめ情報