位置情報で子どもの居場所をお知らせ

Excelで文字列のセルから6桁の番号のみを違うセルに抽出する方法を教えてほしいです。


太郎様 123456 抽出→123456
23-456789 太郎様 抽出→456789
45担当分 45-567891 抽出→567891
678912 23太郎様 抽出→678912

文字列の書き方は共通性がなく、いくつか関数を試したのですが、関数が適応できません。(マクロはやったことがなく、試していません)

何卒よろしくお願いいたします。

A 回答 (3件)

条件の穴については考えないものとします。


=MAX(TEXT(MID(A1,{1,2,3,4,5,6,7,8,9,10},6),"0;-0;0;!0")/1)
    • good
    • 2
この回答へのお礼

ありがとう

ありがとうございます!
関数でも可能なんですね!試してみます!

お礼日時:2017/10/06 23:19

まだ間に合うかしら?この機会に、この場をお借りして、


[No.2]の d-q-t-pさんへ、
=TEXT(strings,"0;-0;0;!0") という書式、初めて見ましたが、「0;-0;0;!0」の部分が理解できません。
差し支えなければ解説してください、お願いします。
    • good
    • 0

こんばんは!



万一6桁以上数字が続いていても6桁でやめても良いのですね?
VBAになりますが、一例です。

元データはA列の1行目からあり、B列に表示するとします。

Sub Sample1()
Dim i As Long, k As Long
Dim myStr As String
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
For k = 1 To Len(Cells(i, "A")) - 5
If Mid(StrConv(Cells(i, "A"), vbNarrow), k, 1) Like "[0-9]" Then
myStr = Mid(StrConv(Cells(i, "A"), vbNarrow), k, 6)
If IsNumeric(myStr) Then
Cells(i, "B") = myStr
Exit For
End If
End If
Next k
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます!
VBAは勉強中ですが試してみます!

お礼日時:2017/10/06 23:17

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

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

このQ&Aと関連する良く見られている質問

Qエクセル関数:6桁中5桁抽出の方法を教えてください。

6桁の数字の左5桁を抜き出すエクセル関数を教えてください。
「111112」だったら「11111」ってな感じです。
お願いします。

カテゴリ違ったかもしれません、スミマセン(>_<;)

Aベストアンサー

LEFT(セル,5)
です。
なお、右ならRIGHT
ある2桁目から5桁ならMID(セル,2,5)
となります。

QExcelで列の上4桁のみ抽出させたい。

Excelで例えばA列に
12345
23322
22333
などの値が合った場合に、下記のように上4桁だけを抽出させたいのですが、方法はあるでしょうか?
1234
2332
2233

Aベストアンサー

普通に
=LEFT(A1,4)
では駄目ですか?

Qエクセル 数値だけ抽出するには?

エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか?
文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。
A列からb列のように変換したいのです。

A列          B列
PMID:_12345678    12345678
PMID:_123456     123456

宜しくお願いいたします。

Aベストアンサー

B1に
VALUE(REPLACE(A1,1,6,""))
でよいでしょう.

数値の桁数には依存しません.

Qエクセル関数/任意の桁数の数字1個1個を別々のセルに読み込む関数

こんにちは
例えば、あるセルに123456という6桁の数字が入っていたとして、1、2、3、4、5、6の6個の数字をそれぞれ別々の(6個の)セルにコピーしてくれるようなエクセル関数はあるでしょうか?

Aベストアンサー

G列に入力した最大6桁の「数値」の、一の位はF列に、十の位はE列
に…と桁毎に分離したいと。小数点以下を無視した基本は、

F1: =mod(int(G1/1),10)
E1: =mod(int(G1/10),10)
D1: =mod(int(G1/100),10)

以下、察して下さい。で、これはブランクでも全部の桁に0が入りま
すね。途中の桁の0は表示して、余分なヤツだけ見えないようにする
工夫が必要です。たとえば

F1: =if(int(G1/1),mod(int(G1/1),10),"")
E1: =if(int(G1/10),mod(int(G1/10),10),"")

みたいな感じはいかがでしょう。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルのセル内から数字だけを抽出する方法を教えて下さい

エクセルのセル内から数字だけを抽出する方法を教えて下さい
あるデータの列(備考欄)には様々な文字が入っていて、
その中に●名(●は数字)が入っています その数字だけを取り出して
別の列に移す関数を教えて下さい
※この列には他の数字は入っていません、最大で2ケタです

よろしくお願いします

Aベストアンサー

セル内の文字列の中に2桁までの数字が入っている場合に、その数字部分を抽出したいなら以下のような数式になります。

=MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890)),1)&IF(ISNUMBER(MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1),MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1,"")

Qエクセルで、桁数の異なるデータ(整数)を抜きたしたいのですが?

初心者です!

エクセルで、例えばA列にある桁数の異なるデータ(整数)を抜きたしたいのですが、アドバイスをお願いします。

桁数は、9桁~11桁の3種類のデータがあり、例えば9桁のデータを抜き出すには、どのようにすればよいのでしょうか?

【例】
A列↓
123456789
2345678910
45874521223
235461789
4567896541
89756413578

以上、宜しくお願いします。

Aベストアンサー

こんばんは!
色々方法はあると思います・・・
一例ですが、
A列に色々な桁数のデータがあるとして、B列に9桁のデータの場合に
「○」をつけるようにする場合です。
1行目がタイトル行だとして、A2セルからデータが入力されている場合ですが。
B2セル=IF(LEN(A2)=9,"○","")
としてオートフィルマーク(+)のところをダブルクリックしてみてください。
後はオートフィルタで「○」だけ選択すれば、9桁のデータのみが表示されます。
以上当方使用のExcel2003での回答でした。
以上、参考になれば幸いです。m(__)m

QVBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義がまずいと思うのですが、それ以上の事は分かりません。どなたか、分かる方がおりましたら、よろしくお願いします。また、プログラムは以下のようになります。

Sub 繰り返し()
'繰り返し
Dim s As Integer
For s = 0 To 17
Range("cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)").Select
Range("cells(8,s+2)").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("20081216_210647").Range( _
"cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""0810p2x"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="0810p2x"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "0810p2x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "t"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next
End Sub

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義...続きを読む

Aベストアンサー

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな(Excelで表示されている)シートが上位オブジェクトとして、自動的に認識されます。

≪例2≫
Sheets("Sheet2").Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、Rangeのみシート名が記述されています。
Sheets("Sheet2").Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
Activeなシートが、Sheet2の場合はエラーになりません。
しかし、ActiveなシートがSheet2以外の場合、エラーが発生します。
直前に、
Sheets("Sheet1").Select
などとしていれば、ActiveシートがSheet1になっていますから、エラーになります。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(8, 1), Sheets("Sheet2").Cells(1587, 2)).Select
と書いておけば安心です。
Withステートメントを使えばスッキリ纏めることができます。
With Sheets("Sheet2")
  .Range(.Cells(8, 1), .Cells(1587, 2)).Select
End With

# Sheets("Sheet2")の上位オブジェクトが省略されていることにも気がついてください。

>そこで自分で基礎を勉強したいのですが推薦できる参考書などがござ
>いましたら、教えていただけませんか?
私自身は、入門書程度の雑誌を1冊買っただけです。どれが良いとかはよく分かりません。
「マクロの記録」を活用して、参考コードを取得し、汎用性のあるコードに編集しています。
新しい単語があれば、文字カーソルを単語の上に置き、F1キーを押してVBAのヘルプを必ず見るようにしています。
躓いた時は、Web検索して欲しい情報を得たり、あるいは、こうした掲示板で先輩方のお力をお借りしています。

Excel(エクセル)VBA入門:目次
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=4651404
エクセル入門・初級編
http://www.kenzo30.com/excel_kiso.htm

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな...続きを読む

Qエクセルの7桁の中から3,5,7桁目だけ抽出したい

エクセルの7桁の中から3,5,7桁目だけ抽出したい

お世話になります。

表題のとおりなのですが・・・
文字列にしてmidで抽出する方法だと飛び飛びには選んでくれないのでどうしたらいよいでしょうか??

結構作業が多そうなので式があればと探しております。
どうぞよろしくお願いします。。

Aベストアンサー

例えば次のような式で

=MID(A1,3,1)&MID(A1,5,1)&MID(A1,7,1)

Qエクセルで文字列の右から4文字を削除してセルに表示したい

明けましておめでとうございます。宜しくお願いします。
エクセルの文字表示で、A列(A1~A20)に文字数の違う文字列が20行程入力されています。それを、A列(A1~A20)のセルに入力されてされている文字列から4文字だけ削除して、B列(B1~B20)に表示(入力)したいのですがどうすればいいのでしょうか?
例えば、A列(A1~A20)のセルにそれぞれ「今年は2008年です。etc.」とか「今年は2008年1月3日です。etc.」、、、など文字数の違った文字列が入力されているセルの右から4文字分「etc.」だけ削除してB列(B1~B20)に「今年は2008年です。」とか「今年は2008年1月3日です。」というふうに表示(入力)したいのです。テキストを読んでMID関数で出来るかなと思ったのですが、MID(文字列の、何文字目から、何文字分)というもので、文字列の左から何文字目を先頭に、何文字分を表示ということで、私のやりたい事の逆なのです。いい方法を教えて下さい。

Aベストアンサー

=MID(A1,1,LEN(A1)-4)
では?


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

人気Q&Aランキング