明けましておめでとうございます。宜しくお願いします。
エクセルの文字表示で、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(文字列の、何文字目から、何文字分)というもので、文字列の左から何文字目を先頭に、何文字分を表示ということで、私のやりたい事の逆なのです。いい方法を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

=MID(A1,1,LEN(A1)-4)


では?
    • good
    • 7
この回答へのお礼

さっそくの回答有難うございます。そうですか。MID関数とLEN関数を合わせて使用するんですね。助かりました。今から、やってみます。

お礼日時:2008/01/03 13:12

ANo5さんの方法で


=SUBSTITUTE(A1,RIGHT(A1,4),"")

右から四文字を置き換え
    • good
    • 18
この回答へのお礼

ご丁寧に回答有難うございます。皆さんに教えて頂いた事を一つづつ行っていた所ですが、このSUBSTITUTE関数についてテキストを見てやる予定だったので大変、助かりました。さっそく、やってみます。有難うございました。

お礼日時:2008/01/04 10:13

文字列操作関数SUBSTITUTE(サブスティテュート)が良いのではないでしょうか。

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

さっそくの回答有難うございます。皆さんに教えて頂いた方法を今からひとつひとつやってみます。有難うございました。

お礼日時:2008/01/03 13:23

#2 Cupperです



あれ?
すでにまとめが入ってるけど気にせずRight関数を使った例をあげてみます
 #だってさ、LEFT関数、MID関数ときたらやっぱり次はRIGHT関数でしょ
こんな面倒なことする必要はありませんが、こんな事もできると言う例として参考にしてください

=SUBSTITUTE(A1,RIGHT(A1,4),,1)
=SUBSTITUTE(A1,RIGHT(A1,4),,(LEN(A1)-LEN(SUBSTITUTE(A1,RIGHT(A1,4),)))/4)

これは文字列から指定した文字列(右4文字)を空白文字に置換えることで実現しています
 ※SUBSTITUTE関数についてはExcelのヘルプを参照してください
二つ目の長い数式は、右4文字と同じ文字列が他にも存在した場合を考慮した物です
元の文字列から、問答無用で指定した文字列を空白に置換えた場合の文字数を引き算で計算しています
コレを4で割れば、一番最後に出てきた文字列(すなわち一番右)が何番目に出てくるか分かりますので
右4文字だけを指定して空白文字に置き換えることができます


ロジカルな遊びですので真似しなくてもOKです
    • good
    • 1
この回答へのお礼

再度のご教示有難うございます。それも合わせて勉強させて貰います。

お礼日時:2008/01/03 13:21

もう回答は出ているが、案外易しい問題です。


セルの文字列の長さは=LEN(A1)で求められる。
右端の4文字を省くのだから、文字列の先頭から左部分を採るLEFT関数を使う。LEFT関数は文字数だけを指定するので
=LEFT(A1,LEN(A1)-4)
ーー
文字列で使える関数はそう多くない
MID、LEFT、RIGHT、LEN((それぞれBつき、なしとあり)、TRIMなど
なのでまとめて勉強のこと
    • good
    • 1
この回答へのお礼

親切丁寧な回答有難うございます。皆さんに教えて頂いた方法を今からさっそくひとつひとつやってみます。有難うございました。

お礼日時:2008/01/03 13:19

=LEFT(A1,LEN(A1)-4)


では?
    • good
    • 2
この回答へのお礼

さっそくの回答有難うございます。そうですか。関数を合わせて使用するんですね。助かりました。今から、やってみます。

お礼日時:2008/01/03 13:10

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QセルがWクリックされたら、別のセル(文字列)に含まれる特定の文字を削除したいのですが・・・

よろしくお願いします
いつもgooの皆さんには大変お世話になっております
win8.1でエクセルは2013です

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
で次のことをしたいのですが、以下のマクロはどう書いたら良いでしょうか?

********** マクロの内容(ここから)  **********
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  もしも、セルA3でWクリックされたら
  もしも、セルB10に文字列 "HH" が含まれるなら、その"HH"を削除

********** マクロの内容(ここまで)  **********

文字列"HH"が含まれれば削除したいセルはB10以外にも10数か所、離れ離れであります
ので、あとは、その数だけIF文を書こうと思っています
文字列”HH”は変えるかもしれませんので、変数に代入したいです

どなたか教えてください

よろしくお願いします
いつもgooの皆さんには大変お世話になっております
win8.1でエクセルは2013です

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
で次のことをしたいのですが、以下のマクロはどう書いたら良いでしょうか?

********** マクロの内容(ここから)  **********
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  もしも、セルA3でWクリックされたら
  もしも、セルB10に文字列 "HH" が...続きを読む

Aベストアンサー

ミスった

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim myStr As String
myStr = "HH"

If Target = Cells(3, 1) Then
If (InStr(Cells(10, 2).Value, myStr) >= 1) Then _
Cells(10, 2) = Replace(Cells(10, 2), myStr, "")
End If

End Sub

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qマクロ「A1の値は、セル範囲でA1:AB39の右2文字が YR と書いてあるセルの右隣の値」

よろしくお願いします
いつもgooの皆さんに大変お世話になっています
エクセルは2013です

マクロで
「A1の値は、セル範囲でA1:AB39の値(文字列)の右端2文字が YR と書いてあるセルの右隣の値」
はどういうコードになるでしょうか

例えば セル D10 の値(文字列)が、「2月合計yr」でしたら
セル A1 には 右隣のセル E10 の値を表示したいのです

右2文字は Ucase(Right(セル,2)) ですが
「セル範囲A1:AB39で、そのセルの右端2文字がYRと書いてあるセルの右隣のセル」を
探す方法が分かりません

Aベストアンサー

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c As Range
 With Range("A1:AB39")
 Set c = .Find( _
  What:="*yr", _
  After:=Range("A1"), _
  LookIn:=xlValues, _
  LookAt:=xlWhole, _
  SearchOrder:=xlByRows, _
  MatchCase:=False, _
  MatchByte:=False)
    If Not c Is Nothing Then
     c.Offset(, 1).Value = Range("A1").Value
    End If
 End With
End Sub
'//

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qエクセル 文字を右詰めで1つのセルに1文字ずつ入力した形に変更するには

いつもお世話になります。
昨日、MID関数等で、1つのセルに入力されている情報を1文字ずつセルに入力する方法を知ったのですが、それを右詰めにする方法はありますでしょうか。

例;Sheet1に、6ケタまでの数値を入れるセルがあります。
これをSheet2のA1~F1のセルに1字ずつ入れたいのですが、Sheet1に"1000"と入れた場合、Sheet2のセルA1~F1には
A1=(空白),B1=(空白),C1="1",D1="0",E1="0",F1="0"
という形にしたいのです

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

Aベストアンサー

こんにちは。maruru01です。

数値限定で。
Sheet2のA1に、

=MID(TEXT(Sheet1!$A$1,REPT("?",6)),COLUMN(A1),1)

と入力して、右へコピーします。
ちなみに、この数式だと数字がない桁は空白ではなく半角スペースが入ります。
もし、半角スペースも入れたくないなら、

=TRIM(MID(TEXT(Sheet1!$A$1,REPT("?",6)),COLUMN(A1),1))

とTRIM関数を通して下さい。

また、最大桁数が変わる場合は、数式中の「6」を任意に変更して下さい。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QEXCEL関数 セル内の文字列を検索し、その1つ右の文字列を表示する関数

出勤簿 兼 給料計算表 を作っています。

J4セル内の"訪60×"という文字列を検索し、もしあれば"訪60×"のひとつ右の1文字列(必ず数字1文字です)を表示、なければ""(なにもなし)を表示する関数を作っていただけないでしょうか。
何卒よろしくお願いしますm--m

J4セル内:  +訪問
       訪60×2/臨60×0/

Aベストアンサー

失礼。質問タイトルに「EXCEL」とありましたね。
IFERRORは Excel2007からの関数です。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

以前に
エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか?

例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。
例としまして
セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。

問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。
つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。
勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか??

よろしくご教授お願いします。

以前に
エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか?

例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。
例としまして
セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側...続きを読む

Aベストアンサー

    A     B   C   D   E   F   G
1  345678   3   4   5   6   7   8
2    789               7   8   9

B1=LEFT(RIGHT(" "&$A1,6-COLUMN(A1)+1))
★右と下にコピー


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

人気Q&Aランキング

おすすめ情報