-1

現在、Excel または Access でデータを簡単に入力できるようにする方法を決定しようとしています。私はExcelでデータフォームツールを使用しますが、スキャンが成功した後に入力コマンドを送信するように構成されたスキャナーを使用しているため、次のセルに移動します。

Serial Number   Employee    Time
    123          Brian  8/20/13 8:49:21 PM
    213          Brian  8/20/13 8:49:21 PM
    334          Nick   8/20/13 8:49:21 PM

シリアル番号がスキャンされた正確な時間を知りたいです。現在のように、シートに変更が加えられるたびに時間が更新され、実際には目的を達成できません。私は現在、この式を使用しています:

 =IF(A2<>"",NOW(),"")

また、従業員の名前を変更できるようにしたいのですが、その人がアイテムをスキャンしている間も同じままにしておきたいです。ドロップダウン リストを参照しようとしましたが、そのフィールドが変更されると、残りの従業員フィールドも変更されます。

最終的にこれは別の場所に配置され、データを相互に関連付けることができるようにする必要があるため、これが Access に最適であると推測しています。何か素晴らしいことをして、それを機能させます。

どんな助けでも大歓迎です。

4

2 に答える 2

1

シリアル番号はおそらくいくつかの記事に関連付けられており、既に複数の場所とユーザーを考えているので、Access を使用することをお勧めします。

これはすべてデータベースに依存しており、Excel のようにセットアップするのはそれほど直感的ではないかもしれませんが、最終的には、重複をキャッチしてクエリを作成する際に、はるかに堅牢で扱いやすくなります。

ただし、両方の方法で実行できます。ただし、使用しないnow()でください。この関数は、再計算されるたびに時間を更新するためです。そのため、何度も同じ時間を取得します。

時間を動的コンテンツとしてではなく固定テキストとして挿入する関数を作成して呼び出す必要があります。

ただし、Access では、フィールドのデフォルト値として now-function を使用しても機能します。database-entry が関数ではなく値になるからです。

Excel の場合、新しいワーカーをアクティブ化するときに、この関数を強化し、キーリスナーを作成/アクティブ化する必要があります。

'This code goes into a VBA-Module
'and can be access on a Worksheet calling =myScan("test")
Public Function myScan(strWorker As String)
    Table1.Cells(2, 1) = "1"
    Table1.Cells(2, 2) = strWorker
    Table1.Cells(2, 3) = Now()
End Function

シリアル番号は行から取得できます。主な問題は、現在/次の行にとどまってデータを貼り付けることです。

ただし、たとえば、Excel ダイアログを作成してワーカーを選択し、スキャン モードを有効にしてスキャンすることもできます。データを Excel に保存するのではなく、Web または Access データベースに接続することもできます。これを強くお勧めします。 ;)

編集

'This code works, when you place it as the VBA-Code of your worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
    'react only on changes on column A
    If (Target.Column = 1) Then
        'react only on changes on column A when the row is greater than 5
        If (Target.Row > 5) Then
            'use the current time for Bx
            Me.Cells(Target.Row, 2) = Now()
            'use the user-name from C2 in Cx
            Me.Cells(Target.Row, 3) = Me.Cells(2, 3)
        End If
    End If
End Sub

VBA エディターを開き、使用ALT+F11するテーブル オブジェクトを選択し、上記のコードを配置して、マクロ Excel ドキュメントとして保存します。

ワークシートは次のようになります。

ここに画像の説明を入力

A6-Ax から何かを変更するたびに、自動的に更新されます。

于 2013-08-21T01:33:21.237 に答える
0

簡単な答えは次のとおりです。Excel はデータベースではありません。データに関するレポートを作成する予定で、大量のデータが含まれる場合は、Excel を考慮する必要さえありません。データベースではなく、スプレッドシートです。

于 2013-08-22T14:47:37.940 に答える