アプリ版:「スタンプのみでお礼する」機能のリリースについて

A1に文字列を入力します
その文字列を検索して、同じ文字列があるセルへ移動させたい。

具体的には
B1からB2000にデータ(JANコード)があります。
A1にバーコードリーダでJANコードを入力します。
B列から該当JANコードを検索し、そのセルの1つ右のセル(C列)に移動させたいのです。

その選択された”C列セル”にデータを入力し、A1に戻り、再び別のJANコードを入力するという作業を繰り返します。

よろしくお願いします。

A 回答 (13件中1~10件)

マクロ(VBA)は使っても良いのでしょうか?

    • good
    • 0
この回答へのお礼

VBAを使って、検索された目的のセルでデータを入力後、ボタンでA1に戻るようなイメージです。

お礼日時:2017/12/17 16:34

>A1にバーコードリーダでJANコードを入力します。


これがA1である必然性はなんですか?
検索ダイアログに入れればそのまま
検索してもらえそうに思いますが。
    • good
    • 0
この回答へのお礼

作業のしやすさなのですが、検索ダイヤログを使用した場合、目的のJANセルに移動し、そこから入力するための隣のセルに移動し、入力後、次の作業のために検索ダイアログをクリックします。その時、検索ダイアログに残った前のデータを消してから、次のJANを入力します(上書きできないので)。
何百回とこの操作を繰り返すので、キータッチ回数を少しでも減らしたいのです。
そこで、任意のセルに(例えばA1)にリーダーで入力し、目的のセルにデータを入力した後、A1に戻る(戻るボタンなどで)ことができれば、気にすることなく次のバーコードリーダー入力(上書き)できるのではないかと考えました。

お礼日時:2017/12/17 16:30

こんばんは!



A1セルは手入力ですね?
一例です。
シートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Intersect(Target, Range("A1,C:C")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Column = 1 Then
If .Value <> "" Then
Set c = Range("B:B").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 1).Select
Else
MsgBox "該当なし"
.Select
End If
End If
Else
Range("A1").Select
Range("A1").ClearContents '//★//
End If
End With
End Sub

※ C列入力後、A1セルを選択するようにしていますが、
その時点でA1セルに入っていたデータは消去するようにしています。
そのまま残したい場合はコード内の「★」の行を消してください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
シートモジュール、Private Subのところでつまづいていますが、頑張ってみます。

sub call()
call Worksheet_Change(ByVal Target As Range)
End sub

を同じモジュールに書いて、callマクロから実行しようとしたのですが.....

お礼日時:2017/12/17 21:26

念の為に確認ですが


① B列には重複は無いと考えて良いのでしょうか?
② B列の最後は2000の固定の方が良いのでしょうか?
③ B列にタイトル行は無いと考えて良いのでしょうか?
④ A1セルに戻った時はA1セルを自動クリアした方が良いのでしょうか?
⑤ C列に書き込んだら未確認でA1セルを選択するで良いでしょうか?(毎回確認だと作業化されてしまって習慣で結局確認ボタンを押してしまう事になってしまって手間なだけになる事が多いので…)
    • good
    • 0
この回答へのお礼

①重複はありません
②現在B7からB2559までにデータがあります。今後増えますが最大4000までです
③B6に”商品コード”というタイトルがあります。(B1~B5は空白)
④A1は自動クリアした方がよいです
⑤未確認でA1を選択することでよいです

よろしくお願いします

お礼日時:2017/12/17 21:22

No.3です。



単純にシートモジュールだけで大丈夫だと思います。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
前回のコードをコピー&ペースト(Private Sub・・・~End Subまで)

Excel画面に戻り(VBE画面を閉じて)A1セルにデータを入力してみてください。
C列に飛びますので、C列に何らかのデータを入力するとA1セルに戻ります。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
A1にB列にあるJANコードを入力しても”該当なし”となります。

私の質問の仕方がよくなっかったのかもしれません。

具体的には
B6にタイトル”商品コード”
B7~下にB2559まで、JANコードがあります。
それぞれのJANコードの横(C列)に在庫数を入力することが目的です。

例えば
A1にJANコード”14987233008665”を入力した場合
”14987233008665”がB10にあった場合はC10のセルが選択され、入力待ちになり、
C10に在庫数の3を入力したら、A1にアクティブセルがもどり、次の入力まちになる

教えていただいたVBAを理解しようと頑張っていますが、時間がかかりそうで、先ずはお礼まで。

お礼日時:2017/12/17 22:43

No.3・5です。



セルの表示はどのようになっていますか?
仮に実データが「14987233008665」だと「1.49872E+13」のようになっていませんか?

数式バーではちゃんと表示されていてもExcel的には別物とみなしてしまうと思います。

試しにセルの表示形式を「文字列」にし、
「E」なしのすべての桁数表示にしてみたらどうなりますか?m(_ _)m
    • good
    • 0
この回答へのお礼

表示形式を文字列にしましたがE表示になります。
仮に実データを123と入力し、A1に123と入れたら うまくいきました。
B列のみE表示されないように考えます。
実際のデータシートかCSVからEXCELに取り込んだもので、他の列には価格などもあるため、全体を文字列としてEXCELに取り込むのも難があります。
本題からずれてしまいましたが、データ形式を解決すればお示しのVBAは機能することが確認できました。

お礼日時:2017/12/18 01:22

すみません。

No.5へのお礼について疑問があります。
JANコードは標準で13桁、短縮で8桁のはずですが、事例では14桁の物が提示されています。JANコードではないのでは?
    • good
    • 0
この回答へのお礼

失礼しました、GS1コードでした

お礼日時:2017/12/18 00:14

A1セルとB列の書式設定は次のどれでしょうか?


①「@」(文字列)
②「00000000000000」(「0」を14個)
③ その他(具体的に提示してください)
    • good
    • 0
この回答へのお礼

CSVファイルをEXCELにそのまま取り込んだため、A列、B列ともE表示の数値です。表示形式を文字列に変えてみましたがE表示されます。

検索ボックスにてバーコードスキャナーでGS1コード入力すると、E表示のままのセルを検索することはできました。

A1はバーコードスキャナーでGS1コード入力するのでセル内は”1.49874E+13”のように表示されます(右寄りなので数値だと思います)
B列はやはり1.49871E+13で右寄りに表示されます
いずれも上部の表示は14桁の数字で表示されます。

お礼日時:2017/12/18 01:06

それでは以下のようなものではダメですか?


--------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 行 As Long
Select Case Target.Column
Case 1
If Target.Row = 1 Then
For 行 = 7 To Cells(Rows.Count, 2).End(xlUp).Row
If Format(Cells(1, 1).Value, "@") = Format(Cells(行, 2).Value, "@") Then
Cells(行, 3).Select
Exit Sub
End If
Next
End If
MsgBox ("該当が有りませんでした")
Application.EnableEvents = False
Cells(1, 1).Select
Selection.ClearContents
Application.EnableEvents = True
Case 3
Application.EnableEvents = False
Cells(1, 1).Select
Selection.ClearContents
Application.EnableEvents = True
End Select
End Sub
--------------------------------------------------------
    • good
    • 0

セルの表示も14桁の数字の方が良いですよね


--------------------------------------------------------
Private Sub Worksheet_Activate()
Range("A1,B:B").NumberFormatLocal = "0"
End Sub
--------------------------------------------------------
これを組み込むと対象のシートがアクティブになると勝手に書式を変えてくれるので使いやすいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A