お世話になります。

以下のようなセルがあります。

ABC:123
DEF:456
ZYX:2008 2/6 16:00:00

このデータの、一番左の「:」(コロン)だけ区切りたいのですが、
「区切り位置」を使用して実行すると、
「ZYX:2008 2/6 16:00:00」

「ZYX|2008 2/6 16|00|00」
という風に区切れてしまい困っています。

一番左の「:」だけ区切るのに、
何か良い方法はないでしょうか。

宜しくお願い致します。

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

A 回答 (6件)

いっそのこと関数でやればよいと思うが。

区切り位置の方法を捨てれば良い。
A列 元データA1:A3
aaa:sdf:dddaaasdf:ddd
sd:sdffsdsdff
sghj:sd:df:xsghjsd:df:x
B列のB1はは
=LEFT(A1,FIND(":",A1)-1)
C列のC1は
=RIGHT(A1,LEN(A1)-FIND(":",A1))
結果は
上記B,C列
    • good
    • 1
この回答へのお礼

ありがとうございます!

希望通りの解決方法でした。
今後も使わせてもらいます。
本当にありがとうございました。

お礼日時:2008/02/07 09:27

NO1です。


>同時に設定はできないようなのです。
コロンの左端の文字列が同じ長さに限りますが、仮にA列がデータ列として、A列を選択して手順案をお試し下さい。
    • good
    • 0
この回答へのお礼

2回の回答ありがとうございます。
コロンの左端が不定ですので、この方法はできませんでした。

ありがとうございます。

お礼日時:2008/02/06 17:57

先頭の:の位置が不定の場合ですが...


方法1
B1=LEFT(A1,FIND(":",A1,)-1)
C1=RIGHT(A1,LEN(A1)-LEN(B1)-1)
として下方に必要なだけコピー
この2列を選択してコピーして「形式を選択して貼り付け」で「値」にする。
A列を削除

方法2
B1=SUBSTITUTE(A1,":","\",1)
として下方に必要なだけコピー
この列を選択してコピーして「形式を選択して貼り付け」で「値」にする。
「データ」「区切り位置」で「\」を区切り文字として使用する
A列を削除
    • good
    • 0
この回答へのお礼

ありがとうございます。

できれば方法1のような関数で解決させたいのですが、
教えてもらった通りやっても数式の結果の時点で、
「#VALUE!」となってしまいます。
なにか条件などがあるのでしょうか。

お時間がございましたら教えて下さい。
宜しくお願い致します。

お礼日時:2008/02/06 17:56

こんにちは。



ABC:123
DEF:456
ZYX:2008 2/6 16:00:00

この場合、“:”が共通しているから同じように切れてしまうんですよね。だったら一番左の“:”だけ“;”や“,”に変えたら良いんじゃあないでしょうか。
でも、これだとデータが多いと大変ですよね。
私にはこれぐらいしか思いつかないんですが、少しでも力になれたらと思って回答しました。
    • good
    • 0
この回答へのお礼

ありがとうございます。

「○○日時:」と時間のデータには規則があるので、
「日時:」の置き換えで、作業はさほど厳しくありませんでした。

やりたいことは解決できたので、もっとも解決に近い回答だったと思います。
ありがとうございました。

お礼日時:2008/02/06 17:16

区切り位置で行うなら、「スペースによって右または左~」を選択して区切ってはどうでしょうか?


ABC,DEF,ZYXが同じ長さであればこれで区切れると思います。

ABC~ZYXが同じ長さでない文字列で区切るのであれば、一度「:」を「:       」(空白はスペースで適時な長さ)で置換えをしてから、区切り位置を「スペースによって右または左~」で区切り、その後「:       」を「:」で置換えという手もあります(かなり物理的ですが)。
    • good
    • 0
この回答へのお礼

ありがとうございます。

「:」の前は不定なので、文字数にはばらつきがあり、
この方法ではダメでした。
私の質問の仕方が悪く深く反省しております。

ありがとうございました。

お礼日時:2008/02/06 17:04

次の方法は如何でしょうか。


(1)区切り位置→「スペースによって・・・・」を選択→次へ→データプレビュー欄で↑をドラッグして:を挟む(↑:↑)→完了
(2)B列を削除
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
その方法で成功しました。

しかし、この場合、
ZYX:2008 2/6 16:00:00
のみに対しては使えるのですが、
ABC:123
DEF:456
ZYX:2008 2/6 16:00:00
を同時に設定はできないようなのです。
どうしても(量が多いので)まとめて処理したいのです。

贅沢を言ってしまい申し訳ありません・・・・。
ありがとうございます。

お礼日時:2008/02/06 16:31

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

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

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

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

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

Qセル内の文字列の分割はsearch関数やleft関数を使わずにできないのでしょうか?

エクセルのA列に桁数が不規則な任意の数字が並んでいて、それぞれの数字には単位を表す"g"か"g/k"がついています。
B列にA列の数字を移し変えたいのですが、その際に、"g"がついているものはそのまま、"g/k"がついているものには70を掛けた後に"g"をくっつけて表記したいです。そこでB1セルに下記のような関数を使いました。

=IF(RIGHT(A1,1)="g",A1,LEFT(A1,SEARCH("g",A1,1)-1)*70&"g")

のですが、すごくダラダラしてて長いように感じます。もっと簡単に同様の操作をできないのでしょうか?例えば、文字列と文字列をくっつけるのに&を使うだけですんでしまうように、-を使ったら文字が引き離せるとか、そんな便利な機能はないでしょうか?

過去の質問を検索したところ、search関数とleft関数を用いた回答が一件ヒットしただけで他に見当たらなかったので質問しました。よろしくお願いします。

Aベストアンサー

=IF(RIGHT(A1,1)="g",A1,SUBSTITUTE(A1,"g/k","")*70&"g")
式の長さはあんまり変わりませんが、
文字列を引くというイメージに近いのはSUBSTITUTE ですかね。

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

Q【エクセル】区切り位置で分割したセルを元に戻すには

下記↓のようなデータがあります。

=========

  A    B    C    
1 りんご なし  みかん
2 なし  
3 みかん りんご

=========

これを↓下記のようなデータにかえたいです。

=========

  A
1 りんご,なし,みかん
2 なし
3 みかん,りんご

=========

元々後者のデータだったのですが、
作業のため区切り位置で前者のデータに加工しました。
が、元に戻す必要が出てきました・・・。

&を使ってやる方法だと

りんご,なし,みかん
なし,,
みかん,りんご,

となってしまうし、うまいやり方が思いつきません。
IF関数を使って、ブランクセルの場合は「,」をつけない、とかやれば
できそうな気もしますが、勉強不足でどういう関数を書いたらいいか分かりません・・・。

エクセルにお詳しい方、ご教授いただければ幸いです。

Aベストアンサー

データが必ず左の列から詰まっているのでしたら、
D1セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。

=IF(A1<>"",A1,"")&IF(B1<>"",","&B1,"")&IF(C1<>"",","&C1,"")

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

QEXCELで、別のセル位置が文字列として入っているセルを、関数の引数として使用したい

ややこしいのですが、よろしくお願いします。
例えば、以下のように

a1の値:1(数字)
a2の値:2(数字)
a3の値:3(数字)

c1の値:a1(文字列)
d1の値:a3(文字列)

が各セルに入っている場合、a1からa3までの和(=6)を求めるのに、
c1とd1を引数に使わないといけないのですが、この場合どのようにしたら良いのでしょうか?

お詳しい方どうぞよろしくお願いいたします。

Aベストアンサー

INDIRECTという便利な関数があります。
=INDIRECT()
()内には、文字列で、あたかも人間が式を打ち込むように文字列を
入れるか、または別の関数を使った結果でそうなってもいいのです。
質問例では、=SUM(A1:A3)を求めたいのですが
A1、A3を直接(Direct)に使わないので、間接Indirectに
C1の値とD1の値を使うので
C1&”:”&D1を使います。=C1&”:”&D1
で A1:A3が出来上がるので、それをINDIRECTの()内
に入れ、SUM関数の()内に、人間が打ち込んだように働いてくれます。
それをSUMで合計を求めます。
ご存知の関数は中側から実行されますから、結果はSUM(A1:A#)と同じになります。
=SUM(INDIRECT(C1&":"&D1))

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

Qエクセルで同じセルにある文字列を任意の位置から別のセルに移したい

はじめまして。エクセルのセルについて教えてください。
下記のような規則性の無い文字列を別のセルに取り出したいのですがどのようにしたらよいのか解りません。

<元々の文字列>
FR001/ws frame.flat £100.00
PN1234-ss oval st george £80.00
BT0123-ss square st george cross £126.25

この文字列を3つのセルに分けたいのです。
一番左側はwsやssで終わっている文字列、一番右側は£から右全部
中央のセルはそれ以外の文字列です。

出来るだけ詳しく教えていただけると助かります。
どうぞよろしくお願い致します。

Aベストアンサー

No.2のham_kamoです。
mshr1962さんの数式はとてもスマートですね。私の書き方は非常に泥臭くさかったです。

区切りとなる文字列が2つあるなら、置換してからFINDすればいいとか、エラーが出ないように対象文字列にあえて検索文字列をくっつけるなど、大変参考になりました。

えっと、そしてcorontaさんのご質問ですが、

LEFT(文字列,a)は、文字列の左からa文字を取り出す関数です。
RIGHT(文字列,a)は、文字列の右からa文字を取り出す関数です。
MID(文字列,a,b)は、文字列のa番目の文字からb文字を取り出す関数です。
LEN(文字列)は文字列の長さを返す関数です。
FIND("a",文字列)は、文字列から"a"という文字列を探して、その位置を返す関数です。検索文字列がないときはエラーになります。

それを踏まえて解説します。

●2番目の文字列
C1 =MID(A1,LEN(B1)+2,FIND("£",A1)-LEN(B1)-3)
は、元の文字列A1の「LEN(B1)+2」番目から「FIND("£",A1)-LEN(B1)-3」文字を取りだしています。

・LEN(B1)+2について

B1にはwsもしくはssで切り出した文字列が入っており、
FR001/ws frame.flat £100.00
の場合は「FR001/ws」なので、LEN(B1)は8となります。
したがって、LEN(B1)+2とすると空白をとばして、次の「frame~」の文字列の開始位置となります。

・FIND("£",A1)-LEN(B1)-3について
これが2番目の文字列の文字数になりますが、まず FIND("£",A1) で、元の文字列の最初から£までの文字数が求められます。

そして、B1で取りだした文字列は含まれないので、その文字数を引きます。これが -LEN(B1) の部分ですが、実際はB1で取りだした文字列+次の空白の分で-LEN(B1)-1しないといけません。

さらに、£記号及びその手前の空白は含めないので、その分-2します。上のとあわせて-LEN(B1)-3となります。こうすることで、2番目の文字列の文字数を計算しています。

●3番目の文字列
D1 =RIGHT(A1,LEN(A1)-FIND("£",A1)+1)
は、元の文字列(A1)の右から、「LEN(A1)-FIND("£",A1)+1」文字を取りだしています。これは3番目の文字列の長さを指定していることになります。

3番目の文字列の長さは、全体の長さから、£記号の手前の空白までの文字列を引けば求まります。

文字列全体の長さはLEN(A1)です。

£までの文字数は、£の位置 FIND("£",A1) で求まります。したがって£の手前の空白までの文字数は、FIND("£",A1)-1 となります。

そうすると、3番目の文字列の文字数は、
LEN(A1)-(FIND("£",A1)-1) → LEN(A1)-FIND("£",A1)+1
となります。

No.2のham_kamoです。
mshr1962さんの数式はとてもスマートですね。私の書き方は非常に泥臭くさかったです。

区切りとなる文字列が2つあるなら、置換してからFINDすればいいとか、エラーが出ないように対象文字列にあえて検索文字列をくっつけるなど、大変参考になりました。

えっと、そしてcorontaさんのご質問ですが、

LEFT(文字列,a)は、文字列の左からa文字を取り出す関数です。
RIGHT(文字列,a)は、文字列の右からa文字を取り出す関数です。
MID(文字列,a,b)は、文字列のa番目の文字からb文字を...続きを読む

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

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

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

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

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

Aベストアンサー

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


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

人気Q&Aランキング