• ベストアンサー

エクセル初心者で困っています(2回目の質問です)

・部品をバーコードリーダーで読み取り、在庫管理に使いたいのですが読み込んだ値がまちまちで、後処理に困っています。読み取り値を統一させたいのですが、書式が分かりません。教えて下さい。以下が例です。 〔統一したい形〕  126K 12345C00  上記の様に数字3桁、英大文字1桁、半角スペース1桁、数字5桁、英大文字1桁、数字2桁で読み込ましたいのです。部品によっては最後の"C00"等が付いてない物もあります。  又、数字部で桁が足りないところは"0"表記させたいのです。以下に読み込んで表記させたい例を書きます。 〔表記させたい形〕 005K 00012R00 005K 00011 126K 12486 123E 52114S00   よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

書式では無理でしょうからVBA書いてみました。 ・英字が1または2文字含まれること。 ・数英数、または数英数英数であること。 ・数字、英字の最大桁数を越えていないこと。 以上は守られていることを前提。 列Aに元の値があるとして、編集結果が列Bとします。 列Bは事前に書式を「文字列」に設定ください。 必ず結果を目視して、OKなら結果を「コピー」&「形式を選択して貼り付け-値」とすれば良いでしょう。 コードは、以下の手順で貼り付けてください。 1.ツール>マクロ>VisualBasicEditorを開く。 2.左上の「プロジェクト」内で右クリックし、挿入>標準モジュールをクリック。 3.カーソルが右上ウィンドウに移動するので、以下のコードをコピー&ペーストする。(FunctionからEnd Functionまで) Function fncコード変換(str入力 As String) As String Dim n英字1文字目 As Long Dim n英字2文字目 As Long Dim n文字位置 As Long Dim str編集用文字列(6) As String For n文字位置 = 1 To Len(str入力) Debug.Print str入力, Len(str入力), n文字位置, Mid(str入力, n文字位置, 1), Asc(Mid(str入力, n文字位置, 1)) Select Case Asc(Mid(str入力, n文字位置, 1)) Case Asc("A") To Asc("Z"), Asc("a") To Asc("z") If n英字1文字目 = 0 Then n英字1文字目 = n文字位置 ElseIf n英字2文字目 = 0 Then n英字2文字目 = n文字位置 Else fncコード変換 = "書式例外エラー" End If End Select Next n文字位置 str編集用文字列(1) = Format(Mid(str入力, 1, n英字1文字目 - 1), "000") str編集用文字列(2) = StrConv(Mid(str入力, n英字1文字目, 1), vbUpperCase) str編集用文字列(3) = " " If n英字2文字目 = 0 Then str編集用文字列(4) = Format(Mid(str入力, n英字1文字目 + 1, Len(str入力)), "00000") str編集用文字列(5) = "" str編集用文字列(6) = "" Else str編集用文字列(4) = Format(Mid(str入力, n英字1文字目 + 1, n英字2文字目 - n英字1文字目 - 1), "00000") str編集用文字列(5) = StrConv(Mid(str入力, n英字2文字目, 1), vbUpperCase) str編集用文字列(6) = Format(Mid(str入力, n英字2文字目 + 1, Len(str入力)), "00") End If fncコード変換 = Join(str編集用文字列(), "") End Function 4.保存する。 5.シートへ戻り、入力セルがA1なら、セルB1に式設定。 =fncコード変換(B1) 6.必要に応じて下方向にコピー。(セルB1の右下にある■をダブルクリックでOK) お試しください。

その他の回答 (3)

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.4

No.3への補足です。 (19)B2~AU2を、他の行に必要な数だけコピーしてください。

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.3

ご所望のものをワークシート関数で実現する方法を書きます。 (1)C1~N1に、1から12までの番号を入れてください。 (2)Q1~AB1、AE1~AP1にも同様に1から12の番号を入れてください。 (3)A2から下に、元のデータを順次入力しておきます。 (4)B2につぎの式を入れます。これは小文字を大文字に統一するためです。 =UPPER(A2) (5)C2につぎの式を入れます。これは、どこまで数字があるかを調べるためです。 =IF(B2=0,0,IF(ISERR(VALUE(LEFT(TRIM($B2),C$1))),0,C$1)) (6)C2の式を、C2~N2にコピーします。 (7)O2に次の式を入れます。 =MAX(C2:N2) (8)P2につぎの式を入れます。 =TRIM(MID(B2,O2+2,999)) (9)Q2につぎの式を入れます。 =IF(P2=0,0,IF(ISERR(VALUE(LEFT(TRIM($P2),Q$1))),0,Q$1)) (10)Q2の式を、R2~AB2にコピーします。 (11)O2~P2の式を、AC2~AD2にコピーします。 (12)AE2につぎの式を入れます。 =IF(AD2=0,0,IF(ISERR(VALUE(LEFT(TRIM($AD2),AE$1))),0,AE$1)) (13)AE2の式を、AF1~AP2にコピーします。 (14)AC2の式を、AQ2にコピーします。 (15)AR2に、つぎの式を入れます。 =TEXT(LEFT(B2,O2),"000")&MID(B2,O2+1,1) (16)AS2に、つぎの式を入れます。 =TEXT(LEFT(P2,AC2),"00000") (17)AT2に、つぎの式を入れます。 =IF(AQ2=0,"",MID(P2,AC2+1,1)&TEXT(AD2,"00")) (18)AU2に、つぎの式を入れます。これが結果となります。 =AR2&" "&AS2&AT2

yazaemon
質問者

お礼

・31日の棚卸結果で早速試させて頂きました。式のコピーを間違えて最初はうまく出来ませんでしたが何とか結果を出せました。ありがとうございました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

実際に読み込んだデータはどのようになっているのですか?

yazaemon
質問者

補足

5e123 2k23511 23k 1567 03c1256r00 126H 87321 上記のようにまちまちです。

関連するQ&A

  • エクセルで桁数の表示について

    エクセルで入力した数字を6桁の表記変換にする事ってできますか? 例  1   →000001  123  →000123  123456→123456 と言う形に変換したいのですが。 目的は、VLOOKUP検索で検索する値がすべて6桁の 表記になっているので、6桁の文字列にしないと いけないからなんですが。 とりあえず、下記に示すif関数で変換してるんですが もっと簡単なやり方ってないものですか? 宜しくお願いいたします。 現在している変換方法 =IF(C2<10,"00000"&C2,IF(C2<100,"0000"&C2,IF(C2<1000,"000"&C2,IF(C2<10000,"00"&C2,IF(C2<100000,"0"&C2,C2))))) (C2セルに数値を入力)

  • エクセルVBAで数式を入力したいのですが、

    文字列(数値が他の文字と混在して入力されている)のセル内容に空白を見つけて、空白の前の文字(データによって1~4桁、実際は数字)を表示したいので、下記のようにしました。 結果、『SEARCH(" "』の空白を指定する『"』でエラーになってしまいます。 このエラーを回避する方法を教えて下さい。 Range("J12").FormulaR1C1 = "=mid(r[8]c[-5],SEARCH(" ",r[8]c[-5],6)-5),4)" セルデータの例 &nbsp;&nbsp;1: 52 ABCD EFGH(AAA) &nbsp;&nbsp;6: 823 JYUGF JKLM (B) 『:』までには半角空白が2個、次に半角数字が1桁、 次に半角空白があり、次の半角空白までに数字1桁から4桁があります。この数字を取り出したいのです。 宜しくお願いします。

  • EXCELの置換 方法

    前回も似たような質問をさせていただいたのですが、 また似たような処理が出てきてしまったので質問させてください!! もしお分かりになる方がいらっしゃいましたらアドバイスいただけると嬉しいです。 よろしくお願いします!! コード番号の一括置換えをするにはどうすれば良いのか教えてください。!! <例> 00000X0-0 00111T0-1 00200S0-0 00003K0-0    ・    ・    ・    ・ 上記のような数字5桁/英字1文字/数字1桁/ハイフン/数字1桁 で表記されるコード番号があります。 このコード番号を数字3桁/英字1文字/数字2桁/ハイフン/数字2桁 で一括置換えしたいのですが、それは可能でしょうか? <例> 000X00-00 111T00-01 200S00-00 003K00-00 *英字の次の数字とハイフンの次の数字は“0”が挿入されます。 (下線の箇所です。) コード番号の数が600件程あるので、一括置換えができると とても時間短縮になるのですが、、、。 置換えでなく、他の方法で変換が出来るのでしたらそちらも 教えて頂ければと思います。 (難しいマクロとかはやったことがないのでできましたら関数の応用などで 出来るやり方を教えて頂ければ有難いです。) 宜しくご指導お願いします。!!

  • エクセル

    エクセル で セル Fに ※※※K ※※※※※ (数字3つ+K+半角スペース+数字5つ) の形が入ったら  セル Bにそのままのその数字と文字を反映させる(F情報がBに入る)  とゆう計算式をセルBに入れたいのですが。 (ちなみに※には必ず数字が入り 都度数字は変わります。 変わらないのは Kとゆうアルファベットと Kのあとに半角スペースが入る とゆうことです)

  • Excelのセルの数字のみを別のシートのセルに転写

    Excelのセルの先頭に固定した桁数(例として7桁)の半角数字と文字数はフリーの全角の文字を入力し、別のシートのセルに固定した桁数(例として7桁)の半角数字だけを転写する方法を教えてください。

  • エクセルで桁合わせ!

    エクセルでA列に文字形式の数字があります. 例 0123 12345 234567 この文字形式の数字を仮に7桁で統一したいとします. 先頭に足りない桁は0を付加します. 変換後 0000123 0012345 0234567 このようにしたいのです. 列にあるデータごとに0を桁数分だけ付加していけばいいのですが このようなデータがたくさんあるので なにかいい方法がありましたら教えてください. お願いします.

  • EXCELVBA 文字の判別

    excelVBAで困っていることがあります。 あるセルに入っているデータの先頭の文字より半角数字5桁の数字を取得する処理を作っています。 先頭5文字をmid関数で取得すれば、簡単だと思っていたのですが、 データを見てみたところ、以下のようなデータがあることがわかりました。 (例)20-500(半角-),20―500(ダッシュ),20500(全角) 20 500(半角スペース),20 500(全角スペース),205(桁落ち),2050あ(全角文字付き) 5桁の数字が取得できると思われる箇所は 半角5桁で取得しなければいけません。 また、正しいデータは半角数字5桁だよ、 ということをユーザに知らせるため、半角数字5桁のデータ以外は それぞれ半角-は赤、ダッシュは青等セルの色を変更する必要があって困っています。 ご教授ください。よろしくお願いいたします。

  • エクセルの使い方で質問します。

    一つのセルの中で、いくつかの文章を羅列する場合に全角・半角文字が混在しているからなのか、うまく上下に字がそろわないことがあります。具体的には 1.あいうえお かきくけこ 2. 1あいうえお かきくけこ 3. あいうえお かきくけこ こんな感じでうまくそろいません。ワードの場合にはタブをつかって文頭をそろえることができるのですがエクセルだとうまくいきません。とくに「かきくけこ」をそろえるところがうまくいきません。フォントはずれないようPポイントにせずMSゴシックで統一しています。よろしくお願いします。 補足 数字は半角表示とすることで統一しています。ワードだと半角混在していてもそろえることができますよね。エクセルでも同じようにしたいのです。いつもスペースキーでそろえるのですがうまくいきません。

  • エクセル 複数のセルの値を1つのセルに特定の表示形式で表示したい。

    A1~F1のセルにそれぞれ21 4 76 9 12 6という一ケタまたは二ケタの値があり、それをG1セルに 21Λ04Λ76Λ09Λ12Λ06 (Λは半角スペースの意)という形で、一ケタの値は二ケタにしながら間に半角スペースを入れて表示したいのです。=&を使い、それに半角スペースを入れてみたり、セルの書式設定で文字列で表示してみたりして思考錯誤しておりますがなかなかうまくいきません。どなたか教えてください。宜しくお願いいたします。

  • エクセル リストの一部を使用するハイパーリンク

    いつもお世話になっております。 エクセルで、以下のような約500行のリストがあります。    A列 1 BBB01AA1111 2 BBB01AA2222 3 BBB03AA4444 4 BBB04AA0000 5 BBB06AA5555 リストは全て  ・先頭がBB2文字  ・次に2桁の半角数字  ・次にAA2文字  ・最後に4桁半角数字 で構成されています。 BB・AAの文字、数字の桁数は固定です。 リストに各々ハイパーリンクを設定したいのですが、 リンク先URLはhttp://***/2桁数字+CC+4桁数字となっています。 リストの一部"+"になっています。 (例:A1セル…http://***/01+CC+1111) 500行あるので手動では手間がかかってしまいます。 そこでHYPERLINK関数を使用したいのですが、 URLの"2桁数字+CC+4桁数字"をどのように指定すればよいでしょうか? ご存知でしたらご教示ください。 よろしくお願いします。

専門家に質問してみよう