
エクセルでデータベースみたいなのを作りました。
委託先からのデータの必要な部分だけ取り出す。というものですが、
今度は、その必要なデータの必要なレコードに新たにデータを追加する作業が起きました。
データは従業員のもので、E列が社員番号、J列が氏名で、最終データがELB列まで使っています。
社員番号から個人のレコードを抽出して、ELC列とELD列に判定テキストを入力したいのです。
ELC「○○」、ELD「評価者××」という具合です。
エクセル画面で社員番号を確認しながら、ELC列にコメントを書いていくなんて、
時間がかかりすぎるし、間違いやすいので、どうにかならないかと考えています。
エクセルをアクセスのようにして入力することもできたと思いますが、
その方に良い方法がありましたら、詳しい方教えて下さい。
今後も追加するデータが出てくるかも知れないので、汎用性のある方法でお願いします。
No.7ベストアンサー
- 回答日時:
>エクセル画面で社員番号を確認しながら、ELC列にコメントを書いていくなんて、時間がかかりすぎるし、間違いやすいので、どうにかならないかと考えています。
社員番号で検索すれば、即時に表示できると思いますが、
【検索】機能では何か不都合があるのですか?
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.5
- 回答日時:
ごめんなさい
Dim データベース As Worksheet
Dim 追加設定シート As Worksheet
を
Dim dSht As Worksheet
Dim sSht As Worksheet
に書き換えてください
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.3
- 回答日時:
こんにちは
正確な状態がさっぱりわかりませんけれど・・・
社員番号に対応するELC列(?)に何かを入力したいのだと解釈しました。
元データが既にデータとして存在するのか、手入力で一つ一つ入力するつもりなのかも不明ですが・・・
1)まず、入力内容だけを、データとして別シートにでも一覧的に表にします。
2)転記したい(=実際に入力したい)列に、関数で検索して表示させます。
3)対象列を選択して「コピー」-「値をペースト」で固定値化します。
以上で、人間が検索する手間はなく可能と思います。
No.2
- 回答日時:
>対象を呼び出して追記する形です。
セル値の検索(例:Findメソッド)方法はありますし、
>J列の社員名を確認して、ELC列以降にコメントを入れたいのです。
追記?
検索した結果FindメソッドであればRangeオブジェクトが得られる(見つかればですが)ので行番号はわかるかと。
あとは列に対して入れたい値をユーザーフォームのTextBox(数個)に打ち込んだ物を順次代入すれば良いかと感じたのですが・・・
No.1
- 回答日時:
ユーザーフォームに入力してシートに転記
https://kokodane.com/macro31.htm
データベース的な物を作成されたのなら使用されてませんか?
どこのセルに代入させるかはコードで行ない、作業者自身が触る事なく出来るようにする。
個数を増やせば汎用が効くのではないかなと。
ありがとうございました。
委託先は専用ソフトを使用しており、自社のデータをエクセルに落としたものを受け取っています。
そこで自社データを追記するのですが、E列の社員番号から、J列の社員名を確認して、ELC列以降にコメントを入れたいのです。
単なるレコードの追加ではなく、対象を呼び出して追記する形です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- Excel(エクセル) エクセルの住所から郵便番号を表示するには 2 2022/09/01 16:18
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
Countifよりも早く重複数をカウ...
-
エクセルで、重複データを除外...
-
エクセルで1列に500行並んだデ...
-
excel:別シートの値を飛び飛び...
-
VBA 数式を最終行までコピー
-
不要な行を消したい
-
差し込み印刷 «Next Record»に...
-
エクセルの行の作り方
-
Excel VBA 【QueryTables.Add】...
-
エクセルで横並びの複数データ...
-
Excelの30個ずつの平均値の出し方
-
エクセルで1つの会社名に対して...
-
エクセルのピボットテーブルで...
-
【VBA】A列にある連続したデー...
-
Excelで2つのデータの突合せを...
-
エクセルで2つ以上のリスト比...
-
【エクセル】1列内に複数ある同...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
Countifよりも早く重複数をカウ...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Excelの30個ずつの平均値の出し方
-
不要な行を消したい
-
VBA 数式を最終行までコピー
-
エクセルで横並びの複数データ...
-
エクセルVBA C列に特定の文字列...
-
エクセルで1つの会社名に対して...
-
エクセル~空白のセルのある行...
-
【Excel】小計単位で並べ替えを...
-
エクセルで重複データを削除す...
-
500行の中から、多い順に抽出す...
-
EXCELである範囲内での最大値の...
-
VBA 大きなtxtテキストファ...
-
重複するデータの一部だけを抽...
おすすめ情報