Page 216 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼入力省力化 kinniku 02/10/9(水) 20:16 ┣Re:入力省力化 Nakamura 02/10/9(水) 23:22 ┗Re:入力省力化 kinniku 02/10/11(金) 13:39 ┣Re:入力省力化 ぴかる 02/10/11(金) 13:59 ┣Re:入力省力化 トロイ 02/10/11(金) 14:55 ┗Re:入力省力化 Nakamura 02/10/12(土) 1:23 ┣Re:入力省力化 kinniku 02/10/12(土) 23:11 ┗Re:入力省力化 瀬野 02/10/14(月) 21:10 ┗Re:入力省力化 Nakamura 02/10/14(月) 21:44 ┗Re:入力省力化 瀬野 02/10/17(木) 9:53 ┗Re:入力省力化 Nakamura 02/10/17(木) 12:52 ─────────────────────────────────────── ■題名 : 入力省力化 ■名前 : kinniku ■日付 : 02/10/9(水) 20:16 -------------------------------------------------------------------------
はじめまして。 シート「Book1」に、 A | B ------- 1 | a ------- 2 | b ------- 3 | c ------- 4 | d ------- 5 | e という表を作成しています。 この表の次の行のA列に再び1と入力した際に、そのフィールドのB列に、 自動的にaと表示させることは可能なのでしょうか。 よろしくお願いいたします。 |
▼kinniku さん: >はじめまして。 > > シート「Book1」に、 > >A | B >------- >1 | a >------- >2 | b >------- >3 | c >------- >4 | d >------- >5 | e > > >という表を作成しています。 >この表の次の行のA列に再び1と入力した際に、そのフィールドのB列に、 >自動的にaと表示させることは可能なのでしょうか。 > >よろしくお願いいたします。 こんばんは こんな感じでどうでしょうか? 該当シートモジュールに以下の様に記述して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 And IsNumeric(.Value) Then If .Value >= 1 And .Value <= 26 Then .Offset(, 1).Value = Chr(96 + CInt(.Value)) End If End If End With End Sub それでは |
シートの内容ですが、 A列には5〜7桁の数字(例 001122) B列には氏名(例 「山田 太郎」のように姓と名の間には全角スペース) が、それぞれ入力されておりA列の数字はB列の氏名と対応しています。 名前に対するIDが数字でA列に入力されている表であります。 このテーブルは、日々入力を行っているため、 同一人物が複数登場することがままあります。 そうした際に、既に一度入力されている人の場合に、 A列のセルに番号を入力した時点で、自動的に以前に入力された その番号に対応する氏名を同一行のB列セルに表示できるように したいと思いました。 数千件し日々数百件単位で入力を行っているため、 上記の内容が可能となれば、入力時間の大幅な削減となります。 先ほどご紹介頂きましたスクリプトを試させていただきましたが、 上記の内容では機能いたしませんでした。 私の状況説明が非常に不十分であり大変申し訳ありませんでした。 よろしくお願いいたします。 |
kinnikuさん、Nakamuraさん、こんにちは。 横から少し失礼します。 私は、こんな感じで対応をよくします。(一般機能にて) A列は、入力規則(リスト)を使う。 B列は、VLOOKUP関数を使う。 的外れだったら、ごめんなさい。 |
トロイと申します。 横から失礼します。 試しに書いたのでよかったらお試しください。 ●標準モジュール Option Explicit Function CD_Name(ByVal tRg As Range) As String Dim M With tRg M = Application.Match(.Value, ActiveSheet.Columns(.Column), 0) If IsError(M) = False Then CD_Name = ActiveSheet.Cells(M, 2).Value End If End With End Function ●シートモジュール Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Or Target.Count <> 1 Then Exit Sub Target.Offset(, 1).Value = CD_Name(Target) End Sub 違ったらすいません。 |
皆さん こんばんは いやー随分頓珍漢なコードを載せてしまいました。^^;;) 前コードはA列に1〜26を入力すると、隣のB列にa〜zを 入力すると言う物です。 これでどうでしょう? 該当シートモジュールに記述して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rg As Range With Target If .Column = 1 Then Set rg = Range("A:A").Find(.Value, Range("A65536"), xlValues, xlWhole) If Not rg Is Nothing Then Application.EnableEvents = False .Offset(, 1).Value = rg.Offset(, 1).Value Application.EnableEvents = True End If End If End With End Sub それでは |
みなさま詳細なご指導誠にありがとうございました。 おかげさまで今後の入力作業が大幅に削減されることと 思います。 >いやー随分頓珍漢なコードを載せてしまいました。^^;;) >前コードはA列に1〜26を入力すると、隣のB列にa〜zを >入力すると言う物です。 こちらの質問文章が非常に不適切であり、ご迷惑をおかけ いたしました。 状況を的確にお伝えできておりませんでした。 今後も質問させていただくことがあろうかとは思いますが、 よろしくお願いいたします。 この度は誠にありがとうございました! |
はじめまして。横から失礼します。 この場合で、A列B列だけでなく、おなじようなかんじで、 C列D列などにもデータがある場合、 どのようにコードを変更したらいいのでしょう? |
▼瀬野 さん: >はじめまして。横から失礼します。 >この場合で、A列B列だけでなく、おなじようなかんじで、 >C列D列などにもデータがある場合、 >どのようにコードを変更したらいいのでしょう? こんばんは こんな感じです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rg As Range With Target If .Column = 1 Then Set rg = Range("A:A").Find(.Value, Range("A65536"), xlValues, xlWhole) If Not rg Is Nothing Then Application.EnableEvents = False .Offset(, 1).Resize(, 3).Value = rg.Offset(, 1).Resize(, 3).Value Application.EnableEvents = True End If End If End With End Sub それでは |
A B C D [番号][名前] [番号][名前] このようなかたちでデータが入力されており、 いちど入力したことがある組み合わせの場合には、 A列に番号を入力するとB列に対応する名前が 表示されて、 C列とD列についても、A・B列とは別個に 同じような対応関係で、入力したい場合は どのようにすればいいでしょうか? 再質問ですいません。 |
こんにちは こんな感じでどうでしょう Private Sub Worksheet_Change(ByVal Target As Range) Dim rg As Range With Target If .Column = 1 Or .Column = 3 Then Set rg = Columns(.Column).Find(.Value, Cells(65536, .Column), xlValues, xlWhole) If Not rg Is Nothing Then Application.EnableEvents = False .Offset(, 1).Value = rg.Offset(, 1).Value Application.EnableEvents = True Set rg = Nothing '前々コードから抜けていました。kinnikuさん 見てたら入れといて下さい。^^;;) End If End If End With End Sub それでは |