過去ログ

                                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と表示させることは可能なのでしょうか。

よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : Nakamura  ■日付 : 02/10/9(水) 23:22  -------------------------------------------------------------------------
   ▼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

それでは
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : kinniku  ■日付 : 02/10/11(金) 13:39  -------------------------------------------------------------------------
   シートの内容ですが、

A列には5〜7桁の数字(例 001122)
B列には氏名(例 「山田 太郎」のように姓と名の間には全角スペース)
が、それぞれ入力されておりA列の数字はB列の氏名と対応しています。
名前に対するIDが数字でA列に入力されている表であります。

このテーブルは、日々入力を行っているため、
同一人物が複数登場することがままあります。
そうした際に、既に一度入力されている人の場合に、
A列のセルに番号を入力した時点で、自動的に以前に入力された
その番号に対応する氏名を同一行のB列セルに表示できるように
したいと思いました。

数千件し日々数百件単位で入力を行っているため、
上記の内容が可能となれば、入力時間の大幅な削減となります。

先ほどご紹介頂きましたスクリプトを試させていただきましたが、
上記の内容では機能いたしませんでした。
私の状況説明が非常に不十分であり大変申し訳ありませんでした。
よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : ぴかる  ■日付 : 02/10/11(金) 13:59  -------------------------------------------------------------------------
   kinnikuさん、Nakamuraさん、こんにちは。

横から少し失礼します。

私は、こんな感じで対応をよくします。(一般機能にて)
 A列は、入力規則(リスト)を使う。
 B列は、VLOOKUP関数を使う。

的外れだったら、ごめんなさい。
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : トロイ  ■日付 : 02/10/11(金) 14:55  -------------------------------------------------------------------------
   トロイと申します。
横から失礼します。
試しに書いたのでよかったらお試しください。

●標準モジュール
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

違ったらすいません。
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : Nakamura  ■日付 : 02/10/12(土) 1:23  -------------------------------------------------------------------------
   皆さん こんばんは

いやー随分頓珍漢なコードを載せてしまいました。^^;;)
前コードは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

それでは
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : kinniku  ■日付 : 02/10/12(土) 23:11  -------------------------------------------------------------------------
   みなさま詳細なご指導誠にありがとうございました。
おかげさまで今後の入力作業が大幅に削減されることと
思います。

>いやー随分頓珍漢なコードを載せてしまいました。^^;;)
>前コードはA列に1〜26を入力すると、隣のB列にa〜zを
>入力すると言う物です。

こちらの質問文章が非常に不適切であり、ご迷惑をおかけ
いたしました。
状況を的確にお伝えできておりませんでした。

今後も質問させていただくことがあろうかとは思いますが、
よろしくお願いいたします。
この度は誠にありがとうございました!
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : 瀬野  ■日付 : 02/10/14(月) 21:10  -------------------------------------------------------------------------
   はじめまして。横から失礼します。
この場合で、A列B列だけでなく、おなじようなかんじで、
C列D列などにもデータがある場合、
どのようにコードを変更したらいいのでしょう?
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : Nakamura  ■日付 : 02/10/14(月) 21:44  -------------------------------------------------------------------------
   ▼瀬野 さん:
>はじめまして。横から失礼します。
>この場合で、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

それでは
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : 瀬野  ■日付 : 02/10/17(木) 9:53  -------------------------------------------------------------------------
    A   B   C   D
[番号][名前] [番号][名前]

このようなかたちでデータが入力されており、
いちど入力したことがある組み合わせの場合には、
A列に番号を入力するとB列に対応する名前が
表示されて、
C列とD列についても、A・B列とは別個に
同じような対応関係で、入力したい場合は
どのようにすればいいでしょうか?

再質問ですいません。
 ───────────────────────────────────────  ■題名 : Re:入力省力化  ■名前 : Nakamura  ■日付 : 02/10/17(木) 12:52  -------------------------------------------------------------------------
   こんにちは

こんな感じでどうでしょう

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

それでは
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 216