• ベストアンサー

エクセルでデータの編集

A列に氏名が列記してあり、氏名の頭に数字(リーディングゼロなし、最大3桁)が付いています。例:下記 A 1山本太郎 2日本次郎 28鈴木花子 336小泉純一 これらの数字を削除してB列を作りたい。例:下記 B 山本太郎 日本次郎 鈴木花子 小泉純一 こつこつでなく、一発で編集できますか?

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.5

こんばんは 私も1例 =REPLACE(A1,1,MAX(IF(ISNUMBER(MID(A1,ROW($1:$15),1)*1),ROW($1:$15),0)),) 配列数式なので確定は[Ctrl]+[Shift]を押したまま[Enter]です (成功すると数式が {} で括られます) 入力後、必要行まで複写

ubonoti01
質問者

お礼

有り難うございます。 できました、バッチリです。希望する「関数式一発」ですし、言うこと有りません。 経験のない関数が使ってあり、勉強、勉強です。 有り難うございました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

関数式での解答。 数字は半角であるとします。(全角数字ならこの解答を 没にしてください。4桁以上数字があっても大丈夫。) 全角数字に直すと、長さが数字の数だけ多くなることを利用します。 以下は途中説明を入れています。 A1:A5 1山本太郎 2日本次郎 28鈴木花子 336小泉純一 2345桑田 茂次郎 --- B1セルに=JIS(A1)といれ以下複写。 1山本太郎 2日本次郎 28鈴木花子 336小泉純一郎 2345桑田 茂次郎 と全角文字ばかりになります。 ---- C1セルに=LENB(B1)といれ下に複写します。 10 10 12 16 20 となります。 ---- D1に=LENB(A1)といれ下に複写します。 9 9 10 13 16 ---- E1に=C1-D1といれ下に複写します。 1 1 2 3 4 と数字の文字数が出ます。 ---- F1セルに=RIGHTB(A1,D1-E1)といれ下に複写します。 山本太郎 日本次郎 鈴木花子 小泉純一郎 桑田 茂次郎 となります。 ---- 1つにまとめると =RIGHTB(A1,2*LENB(A1)-(LENB(JIS(A1)))) (第1行目)となります。 これをB1に入れて、下へ複写してください。

noname#27115
noname#27115
回答No.3

'これでもOKかな? '標準モジュールにこれを追加して、、、 'B1に =GetStr(A1)と入れ、 下にコピーしてください。 Public Function GetStr(pStr As String) As String Dim i As Long Dim buf As String For i = 1 To Len(pStr) If IsNumeric(Mid(pStr, i, 1)) = False Then buf = buf & Mid(pStr, i, 1) End If Next i GetStr = buf End Function

回答No.2

セル A1 からデータが入っているとして、セル B1 に =MID(A1,MAX(ISNUMBER((MID(ASC(A1),COLUMN(1:1),1))*1)*COLUMN(1:1))+1,10) と入力して、下方にドラッグコピーしてみてください。 もし 先頭のデータセルが A4 の場合は、上式の A1 を A4 に、COLUMN(1:1)を COLUMN(4:4) にします。 式内最後の 10 は、検査するセル中で最も長いデータの文字数以上にします。

ubonoti01
質問者

お礼

有り難うございます。 適用してみたところ、A1の解がセルB1ではなく、B1:C3(が結合されたセル)に入ります。解そのものは正しい(A1の1山本太郎に対してB1が山本太郎)です。 そのB1:C3を下位へドラッグすると、2行づつ飛んで解が求まります。 小生の希望に近いのですが、もう少しです。調べてみますが、misatoannaさんもわかりましたら、もう一度ご登場願えませんでしょうか。すみません。

ubonoti01
質問者

補足

大変失礼しました。もう一度念入りに実施したら、ほぼできました。 「ほぼ」といいますのは、氏名の頭の数字が1桁の場合はOKなのですが、2桁,3桁ですと、下1桁,下2桁が残ってしまいます。式のどこかを修正すればよいのでしょうが、小生にはわかりません。

noname#5584
noname#5584
回答No.1

Forループがネストした、かなり汚く読みにくいコードですが、一応、下記のプログラムで可能です。 ( もっとよい方法があるかも・・・ ) Sub PickUpStringData() Dim strTmp As String Dim i As Long Dim j As Long Dim Pos As Long Dim ChrCd As Long With Application.ActiveSheet For i = 1 To .UsedRange.Rows.Count strTmp = "" & .Cells(i, 1).Value If Len(strTmp) > 0 Then For j = 1 To Len(strTmp) ChrCd = Asc(Mid$(strTmp, j, 1)) If ChrCd < 48 Or ChrCd > 57 Then Exit For End If Next j .Cells(i, 2).Value = Mid$(strTmp, j) End If Next i End With End Sub インデントは適宜修正してください。(汗

関連するQ&A

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセルでの重複データの抽出とフラグ

    エクセルでのデータの作成で困っております 下記のように「送り主」と「届け先」の重複データを抽出し数字を与えたいのですが、どうしてよいか判らず困っております。 教えて頂けますでしょうか ギフト配送先のデータ抽出 送り主     届け先  商品 田中太郎  1 佐藤花子(りんご1個) 田中太郎  1 佐藤花子(みかん1個) 田中太郎  1 佐藤花子(バナナ1本) 田中太郎  2 山本○子(みかん1個) 田中太郎  2 山本○子(バナナ1本) 山本○次  1 鈴木△子(りんご詰め合わせ) 山本○次  2 高橋×子(みかん詰め合わせ) 山本○次  3 田中□子(りんご詰め合わせ) 宜しくお願い致します

  • エクセルについての質問です。リラクゼーションサロンの経営をしています。

    エクセルについての質問です。リラクゼーションサロンの経営をしています。エクセルで顧客管理をしていて、お客様のセルに、新規、フリー、指名の3種類の文字がずらっと入力されています。その隣にお客様の名前、その隣に対応したスタッフ名、日付が入力されています。 (1)各スタッフ、新規のお客様をリピータ(フリー、又は指名)にさせた数を数えるにはどうしたらいいですか?下図の場合、スタッフ山本は1、高橋1、太田0となる   A    B    C     D 1新規  鈴木太郎様  山本  2010/10/19 2新規  佐藤花子様  高橋  2010/10/19 3フリー 佐藤花子様  太田  2010/10/20 4指名  鈴木太郎様  山本  2010/10/20  5新規  田中次郎様  太田  2010/10/21 6指名  鈴木太郎様  山本  2010/10/21

  • エクセルで同じ日に2回出勤したデータ数を数えたい

    同じ人が同じ日に2回出勤しているデータ数を知りたいです。 2 山田太郎 1/21 10:00 13:00 2 山田太郎 1/21 18:00 24:00 1 山田太郎 1/22 10:00 17:00 1 山田太郎 1/23 14:00 22:00 1 鈴木花子 1/21 10:00 17:00 1 鈴木花子 1/23 17:00 24:00 2 鈴木花子 1/24 10:00 15:00 2 鈴木花子 1/24 18:00 24:00 ↑のようなタイムカードがあります。 上の例だと、2もしくは4という数値がほしいです。 今までは図のようにA列に countifs関数を記入し、同一人物が同一日付に2回出勤 しているかをチェック、その数を数えていました。 今後は、 同一人物が同一日付に2回出勤している件数を1つの関数で知りたいと考えています。 ↑の例だと、4件 という数を1つの関数で出したいです。 どのようにすればよいのかアドバイスをお願いいたします。

  • エクセルの集計での質問

    A列に日付、BからF列に担当者名(1~5)が入っています。 この表で誰が何日稼働したか調べたいのですが、日付の被りがあるのと、例えば▲▲さんが「担当者1」、●●さんが「担当者2」と決まっているわけでなく、早いもの順に「担当者1~5」までに名前が入っています。 A B C D E F 日 担1 担2 担3 担4 担5 1/3 太郎 次郎 花子 三郎 和子 1/3 次郎 太郎 三郎 美和 和子 1/4 花子 次郎 孝夫.......... この場合求められたものが 1/3 太郎 ×1、次郎 ×1、三郎×1、花子×1、和子×1 、美和×1 1/4 花子×1、次郎×1、孝夫×1 なので 太郎1日 次郎2日 三郎1日 花子2日 和子、美和、孝夫各1日 という風にエクセルで集計できないでしょうか?

  • エクセルのフォームの

    エクセルのフォームの テキストボックスの値をエクセルシートに入れていっているのですが フォームを閉じる時に、重複した値のチェックを入れたいのですが A:Bの列でチェックしたい項目が2つあって、どちらも満たしたときに エラーメッセージを出したいのですが、本を見ても載っていないので 質問させていただきました。 列Aは番号 列Bは氏名です。 A     B 1001001 山本 2001001 山本 3001001 鈴木 3001010 鈴木 3001001 鈴木 この例だと3001001 鈴木が重複していますので 2回目に入力した分を削除しようとしています。 すみませんがどなたか教えてください。 よろしくお願いいたします。

  • 鈴木 太郎・・・英語では?

    記入例などで 氏名の欄に 日本語の場合、 鈴木 太郎 鈴木 花子 などが、よく使われますよね。 これにあたる、英語の人名はありますか?

  • excelで特定の物を持っている人の列をピックアップ

    excelの質問です。 ある特定の物を持っている人の列を選びたいのですが どうすればよいでしょうか? サンプル 花子 りんご 花子 みかん 花子 ぶどう 太郎 みかん 太郎 めろん 次郎 めろん 上記の列から「りんご」と「みかん」を持っている人を ピックアップしたいので、下記のような結果を得たいのです。 花子 りんご 花子 みかん 花子 ぶどう 太郎 みかん 太郎 めろん お手数ですが、ご指導よろしくお願いいたします。

  • Excelで頭数を算出する関数?

    こんにちは。 C列3行目から20行目に氏名があり、D列には個数があります。氏名欄には同一人物も載っているので、メンバーの人数を知るにはどの関数がありますか。 例えば3行目から6行目まではメンバーが3人という結果が出るようにしたいのです。 3 山田太郎 3個 4 佐藤花子 5個 5 田中次郎 6個 6 山田太郎 2個 メンバーは相当の数なので誰が何個売ったかは問題にしません。 宜しくお願いします。

  • エクセルVBAの質問です

    sample.xlsがあり内容は下記のように A列に名前、B列に数字が入り、行数は一定でありません 田中一郎 3 鈴木健一 5 佐藤太郎 8 田中一郎 5 田中一郎 2 佐藤太郎 7 鈴木健一 3 佐藤太郎 9 鈴木健一 54 佐藤太郎 8 田中一郎 9 このエクセルシートにコマンドボタンを付け、VBAでコマンドボタンを押した場合 指定したエクセルファイル”kekka.xls”に 田中一郎 19 鈴木健一 62 佐藤太郎 32 と言うように、名前別でその氏名の横の数字の合計を表示させたいと考えています。 何卒お知恵をお貸しください、お願いします。

専門家に質問してみよう