• ベストアンサー

エクセル セル内の文字列を空白から空白まで抽出したい。

一つのセルに入っている文字列を複数のセルに分割したいのですが良い方法が見つかりません。 具体的には 「商品名 単価 数量 金額」が一つのセルに入っているのですが、これをそれぞれ「商品名」「単価」「数量」「金額」というように別のセルに分けたいのです。 条件は次です。 ・文字列の区切りは空白(スペース)。 ・商品名や金額などそれぞれの文字列の長さは決まっていません。 ・商品名には名称の中に空白が使われている場合があります、その数も決まっていません。 以上です。いろいろ関数を使ってやってみたのですが、どうもうまくいきません。 どなたか良い方法がありますでしょうか、よろしくお願いいたします。

  • allez
  • お礼率68% (11/16)

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.8

No.2です。 分割されなくなって、単にB列にコピーとなってしまったのは、ヘッダ部分だけでなく、データ行も全てそうなってしまったのでしょうか? ヘッダ行かどうか判断するのに「単価」「数量」「金額」であるべきところが「数値であるか」という処理を追加したのですが、データ行のデータが単純に数字でなくて@100とか1000個などとなっていると、ヘッダと見なされてしまいます。 とりあえず、その処理を抜いてみました。ヘッダ部分に空白が3つ以上あると他のデータ行と同様に分割され、空白が2つ以下ならそのままB列に転記されてしまいますが、それでOKならこれでいけるかも。 Sub SplitItems()   Dim r As Range   Dim c As Variant   Dim i As Integer   With Worksheets("Sheet1")     For Each r In .Range("A1", .Range("A1").End(xlDown))       c = Split(r, " ")       If UBound(c) < 3 Then         r.Offset(0, 1).Value = r.Value       Else         r.Offset(0, 1).Value = ""         For i = 0 To UBound(c) - 3           r.Offset(0, 1).Value = Trim(r.Offset(0, 1).Value & " " & c(i))         Next         r.Offset(0, 2).Value = c(UBound(c) - 2)         r.Offset(0, 3).Value = c(UBound(c) - 1)         r.Offset(0, 4).Value = c(UBound(c))       End If     Next   End With End Sub

allez
質問者

お礼

出来ました!! ありがとうございます。 期待したとおりの結果が完全に出ました。 返答に時間がかかって申し訳ありませんでした。貴重なお時間をありがとうございました。 ちなみに 「分割されなくなって、単にB列にコピーとなってしまったのは、ヘッダ部分だけでなく、データ行も全てそうなってしまったのでしょうか?」 への回答は「その通りです。」です。

その他の回答 (10)

回答No.11

allezさん 「穴があったら入りたい」です。こちらこそ、どんくさいマクロをわざわざご確認頂き、ありがとうございました。 それにしても、ham_kamoさんのご回答は美しいですね。最初拝見したときは難しそうだったので、内容を全く確認していませんでした。改めて拝見すると、(私が無知のため知らなかった)関数(Split)や配列の取り扱いが、まるで教科書のようですね。(自慢にならないどころか、allezさんからはお叱りを受けそうですが)私はVBAの本とかに触ったことすらなく、大変勉強になりました。

allez
質問者

お礼

とんでもありません、あれだけの時間を割いて回答していただいただけで、感謝の気持ちでいっぱいです。 たしかにham_kamoさんのマクロは美しいですね、私は早く中身が理解できるようにがんばります。

回答No.10

穴があったら入りたいNo.5&7&9です。 > ・商品名には名称の中に空白が使われている場合があります、その数も決まっていません。 No.9で使用可能なスペース数は1個なので、この条件を満たしていませんでした。ワーク列を増やし、直前のスペース位置を前列から受け取りながら次々に検出していくようにすれば、数式を大きく複雑化せずに実行可能とも考えたのですが、どんどんマクロに近付いてしまうのでいっそのことマクロで作り直そうと思い、試してみました。これまた、どんくさい内容ですが、ご確認頂けませんか。 ・スペースは、区切り用には半角のみ使用可能、商品名には半角・全角とも使用可能。 ・字下げはタブではなくスペースで入れたのですが、確認画面では他の箇所も含め全て削除されてしまいました。また長い行も_で改行しなかったので、非常に見にくいと思います。「教えて!goo」初心者ということで、ご容赦頂ければ幸いです。 Sub データ抽出() Dim Space_Su As Integer, Space_Ichi(20) As Integer, Space_Max As Integer, Data_Number As Integer Dim MojiRetsu_Su As Integer, KugiriSu_1 As Integer, KugiriSu_2 As Integer Dim Tani_Su As Integer, Tani_Ichi As Integer, Shikibetsu_Su As Integer, i As Integer, j As Integer, k As Integer Dim ShutokuData As String, MojiRetsu As String, Moji As String Dim Tani(10) As String, Shiyo_Tani As String, Shikibetsu As String Columns("B:Z").ClearContents KugiriSu_1 = 1 '必須スペースの前半数、スペース合計=前半数+名称箇所使用数+後半数 KugiriSu_2 = 3 '必須スペースの後半数 Tani_Su = 3 '使用単位数 Tani(1) = "本" '例 Tani(2) = "箱" '例 Tani(3) = "ダース" '例 Shikibetsu = "商" '項目名の行を先頭文字で識別 Space_Max = 20 '使用される可能性のあるスペース最大数 Data_Number = 1 ShutokuData = Range("A1") Do While ShutokuData <> Empty MojiRetsu_Su = Len(ShutokuData) Space_Su = 0 For i = 0 To Space_Max Space_Ichi(i) = 0 Next i For i = 1 To MojiRetsu_Su 'スペース位置の検出 Moji = Mid(ShutokuData, i, 1) For j = 1 To Tani_Su If Moji = Left(Tani(j), 1) Then Tani_Ichi = i Shiyo_Tani = Tani(j) End If Next j If Moji = " " Then Space_Su = Space_Su + 1 Space_Ichi(Space_Su) = i If Space_Su > Space_Max Then MsgBox "スペース数オーバー!", vbExclamation, "注意" Exit Sub End If End If Next i If Space_Su < KugiriSu_1 + KugiriSu_2 Then Space_Su = 0 End If j = 1 For i = 0 To Space_Su - 1 '項目の切り離し Select Case Left(ShutokuData, 1) Case Shikibetsu Range("A1").Cells(Data_Number, j + 1) = Mid(ShutokuData, Space_Ichi(i) + 1, Space_Ichi(i + 1) - Space_Ichi(i) - 1) Case Else Select Case i Case 0 To KugiriSu_1 - 1, Space_Su - KugiriSu_2 To Space_Su Select Case Tani_Ichi '「単位+数量」の切り離し Case Space_Ichi(i) + 1 To Space_Ichi(i + 1) - 1 Range("A1").Cells(Data_Number, j + 1) = Shiyo_Tani j = j + 1 Range("A1").Cells(Data_Number, j + 1) = Mid(ShutokuData, Tani_Ichi + Len(Shiyo_Tani), Space_Ichi(i + 1) - Space_Ichi(i) - Len(Shiyo_Tani) - 1) Case Else Range("A1").Cells(Data_Number, j + 1) = Mid(ShutokuData, Space_Ichi(i) + 1, Space_Ichi(i + 1) - Space_Ichi(i) - 1) End Select Case Else '名称項目(商品名) k = Space_Su - KugiriSu_2 Range("A1").Cells(Data_Number, j + 1) = Mid(ShutokuData, Space_Ichi(i) + 1, Space_Ichi(k + 1) - Space_Ichi(i) - 1) i = k End Select End Select j = j + 1 Next i Range("A1").Cells(Data_Number, j + 1) = Right(ShutokuData, MojiRetsu_Su - Space_Ichi(Space_Su)) Data_Number = Data_Number + 1 ShutokuData = Range("A1").Cells(Data_Number, 1) Loop Range("A1").Cells(Data_Number + 1, 1).Select End Sub

allez
質問者

お礼

回答ありがとうございます。 こちらをやってみたのですが、エラーは起きないのですが、一部分割がうまくいかないところがありました。データを見てもそれがどうして分割されないかはよくわかりませんでした。 3110000067 メロンソーダガロン本1,281 1.80 7,705 これは「分割されず」 3110000077 液化ガスK 本9,941 1.80 3,493 これは「6分割」 1400003091 カフェプラス50ml×50 袋8 1.30 231 これは「5分割」でした。 というわけで、 結果的に No.8(ham_kamo)さんの回答を参考にさせていただきました。 返答が遅くなって申し訳ありませんが judas_2006さんの貴重なお時間いただきありがとうございました。

回答No.9

No.5&7です。 allezさん、実際のデータを示して頂き、どうもありがとうございます。正直、かなり驚きましたが、可能な範囲で対応させて頂きました。ご確認をお願いします。 【前提】 ・区切りスペースは全て半角! ・商品名に含まれるスペースは最大1個まで ← IFの入れ子最大数の制約からこうなりました ・ヘッダーに含まれるスペースは2個まで ・実データ5行目の"商品コード 商品名 単位 単価 数量 棚卸金額"において、区切りには半角スペースが使用されるものとし、実データの一部をIF判定に使用 【ワーク列・単位】 ・IFの入れ子制約等から途中経過を保存するために、I及びJ列をワーク列として使用しました。 ← ルール違反かもしれませんが、必要に応じて非表示等のご対応をお願いできればと思います ・実データで使用される単位(3個まで)を、L1、M1、N1に入力下さい。 【数式】 A列 = 元データ列 B1 = IF(ISERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,1)+1)+1)),A1,LEFT(A1,FIND(" ",A1,1)-1)) C1 = IF(B1=A1,"",IF(OR(NOT(ISERROR(FIND("商",I1))),ISERROR(FIND(" ",I1,FIND(" ",I1,FIND(" ",I1,FIND(" ",I1,1)+1)+1)+1))),LEFT(I1,FIND(" ",I1,1)-1),LEFT(I1,FIND(" ",I1,FIND(" ",I1,1)+1)-1))) D1 = IF(AND(ISERROR(FIND(LEFT($L$1,1),J1)),ISERROR(FIND(LEFT($M$1,1),J1)),ISERROR(FIND(LEFT($N$1,1),J1))),J1,IF(ISERROR(FIND(LEFT($L$1,1),J1)),IF(ISERROR(FIND(LEFT($M$1,1),J1)),$N$1,$M$1),$L$1)) E1 = IF(B1=A1,"",IF(D1="単位",MID(I1,LEN(C1&D1)+3,FIND(" ",I1,LEN(C1&D1)+3)-LEN(C1&D1)-3),MID(I1,LEN(C1&D1)+2,FIND(" ",I1,LEN(C1&D1)+2)-LEN(C1&D1)-2))) F1 = IF(B1=A1,"",IF(D1="単位",MID(I1,LEN(C1&D1&E1)+4,FIND(" ",I1,LEN(C1&D1&E1)+4)-LEN(C1&D1&E1)-4),MID(I1,LEN(C1&D1&E1)+3,FIND(" ",I1,LEN(C1&D1&E1)+3)-LEN(C1&D1&E1)-3))) G1 = IF(B1=A1,"",RIGHT(I1,LEN(I1)-LEN(C1&D1&E1&F1)-3)) H列 = 空列 I1 = IF(B1=A1,"",RIGHT(A1,LEN(A1)-FIND(" ",A1,1))) J1 = IF(B1=A1,"",MID(I1,LEN(C1)+2,FIND(" ",I1,LEN(C1)+2)-LEN(C1)-2)) K列 = 空列 L1 = "本" ← 例 M1 = "箱" ← 例 N1 = "ケース" ← 例 【補足】 ・上記は、実際のデータを以下のように区分するものとして作成しました。万一異なっていた場合、allezさんにてご対応頂ければ幸いですが、もし分からない箇所があれば、改めてご質問下さい。 商品コード:3060000791 商品名 : シーバスリーガル 12年700ml 単位 : 本 ← (*) 単価 : 1,240 数量 : 0.20 棚卸金額 : 5,448  (*)「本1,240」は単位と単価がくっ付いていたものと判断し、敢て分割しました。L1~N1の入力はこの作業に用います。 ・従来のallezさんのご説明から、商品名の中には" "(スペース列)、""(ブランク)があるものと想像し、それに対応すべく数式を作成していました。実際のデータを見て、エラーも止むを得ないと感じました。 ・こういう作業は、やはりマクロの出番ですね。入れ子の制約といったこともないし、データ列のスペース数をカウントすれば比較的容易に実行可能と思います。

回答No.7

No.5です。マクロが動くのであれば、そちらの方向で検討されることをお勧めしますが、シート上でも処理可能なのかどうか知りたく思い、ご指摘の箇所への対策を考えてみました。No.5の数式のうち、B1のみ以下のように変更してお試し頂けませんか。(本当にどんくさくなってしまいました) B1 = IF(TYPE(VALUE(LEFT(A1,1)))=1,"",IF(A1=TRIM(A1),LEFT(A1,FIND(" ",A1,1)-1),IF(ISERROR(FIND(" ",A1,(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,1)+1)+1)+1))),LEFT(A1,FIND(" ",A1,1)-1),LEFT(A1,LEN(A1)-LEN(TRIM(A1))-1)))) いくつか仮定させて頂きました。 ・区切りスペースは全て全角。 ・商品名は、文字列、スペース(複数個も可)、ブランクのいずれかで、先頭の1文字目は数字ではない。 ・商品名がブランクの場合に限り、区切りスペースは2個(先頭が単価)もしく3個とする。他の場合は、区切りスペースは3個のみ。 ・単価には0を含む数値が入っている。 ・数量、金額にはブランク及びスペースは用いられていない。 ・(ヘッダーには対応していません。たぶんエラー表示となります) うまく動くといいのですが、もしうまく動かず、なおかつシート上での処理にもご関心がおありなら、動かない「商品名 単価 数量 金額」の具体例を挙げて頂けると有り難く思います(商品名等はダミーで)。

allez
質問者

お礼

ありがとうございます。 こちらもやってみましたがうまくいきません。 B列で区切られるのは、ヘッダー行だけになってしまい。 それ以外の文字列だとB列はブランクになりC列から実質的に分割を行うようになってしまいました。 以下が具体例です。7行目からが取得するデータです。 (※実際のデータには、他に商品コードと単位というものがあります) 2 / 店舗: 416 ○○ 棚卸区分棚卸区分名 2006年10月棚卸表印刷日2006/11/08 商品コード商品名単位単価数量棚卸金額 1 ドリンク 3040001161 ニコライウォッカ黒 720ml 本27 1.70 9,065 3050000441 モルツ中瓶500ml 本32 45.00 2,540 3050000651 モルツ生樽20L 本360 2.50 10,900 3060000791 シーバスリーガル 12年700ml 本1,240 0.20 5,448

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.6

No.2です。マクロが動いてよかったです。 ヘッダー行があるとのことなので、「空白で区切られた項目が3個以下」または、「最後3つの項目のうち1つでも数字でない場合」に「そのままB列に転記する」という処理を追加してみました。 これでほとんどのケースはカバーできると思いますが、いかがでしょうか。 Sub SplitItems()   Dim r As Range   Dim c As Variant   Dim i   With Worksheets("Sheet1")     For Each r In .Range("A1", .Range("A1").End(xlDown))       c = Split(r, " ")       If UBound(c) < 3 Then         r.Offset(0, 1).Value = r.Value       ElseIf IsNumeric(c(UBound(c) - 2)) And IsNumeric(c(UBound(c) - 1)) And IsNumeric(c(UBound(c))) Then         r.Offset(0, 1).Value = ""         For i = 0 To UBound(c) - 3         r.Offset(0, 1).Value = r.Offset(0, 1).Value & " " & c(i)         Next         r.Offset(0, 2).Value = c(UBound(c) - 2)         r.Offset(0, 3).Value = c(UBound(c) - 1)         r.Offset(0, 4).Value = c(UBound(c))       Else         r.Offset(0, 1).Value = r.Value       End If     Next   End With End Sub

allez
質問者

お礼

回答ありがとうございます。 早速やってみたところ、今度はエラーはなくなりましたが、 肝心の分割がなくなってしまい、単純にA列をB列にコピーしただけになってしまいました。 なおるでしょうか。

回答No.5

皆さんのようにスマートな方法ではありませんが、どんくさい方法なら分かりやすいかと思い、参考までにコメントさせて頂きます。前提は皆さんとほぼ同様です。 A1「商品名 単価 数量 金額」、B1「商品名」、C1「単価」、D1「数量」、E1「金額」とします。 スペースは全て全角だとします。 商品名はブランクでも構いませんが、区切りのスペースは必ず3個あるとします。 B1 = IF(A1=TRIM(A1),LEFT(A1,FIND(" ",A1,1)-1),LEFT(A1,LEN(A1)-LEN(TRIM(A1))-1)) C1 = MID(A1,LEN(B1)+2,FIND(" ",A1,LEN(B1)+2)-LEN(B1)-2) D1 = MID(A1,LEN(B1&C1)+3,FIND(" ",A1,LEN(B1&C1)+3)-LEN(B1&C1)-3) E1 = RIGHT(A1,LEN(A1)-LEN(B1&C1&D1)-3) 蛇足ですが、「商品名 単価 数量 金額」はたぶん別のファイルで供給されるのだと思います。もしそうなら、ファイルを開く作業を含めマクロにした方がラクチンのようにも思われます。

allez
質問者

お礼

やってみたら、きれいに出来ました。 ただ、商品名にもブランクが入っているので、E列に必ずしも金額が入らないのが難しいところです。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆A1のデータを、B1=商品名 C1=単価 D1=数量 E1=金額 にするものとします >文字列の区切りは空白(スペース)。 ◆スペースは、「半角スペース」とします B1=REPLACE(A1,FIND("*",SUBSTITUTE(A1," ","*",SUMPRODUCT(N(MID(A1,ROW($1:$50),1)=" "))-2)),LEN(A1),) E1=--REPLACE(A1,1,FIND("*",SUBSTITUTE(A1," ","*",SUMPRODUCT(N(MID(A1,ROW($1:$50),1)=" ")))),) D1=--SUBSTITUTE(REPLACE(A1,1,FIND("*",SUBSTITUTE(A1," ","*",SUMPRODUCT(N(MID(A1,ROW($1:$50),1)=" "))-1)),)," "&E1,) C1=--SUBSTITUTE(REPLACE(A1,1,FIND("*",SUBSTITUTE(A1," ","*",SUMPRODUCT(N(MID(A1,ROW($1:$50),1)=" "))-2)),)," "&D1&" "&E1,)

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.3

A1に「商品名 単価 数量 金額」とあるのを B1「商品名」、C1「単価」、D1「数量」、E1「金額」に分けるとします。 スペースは全て全角だとします。 B1=LEFT(A1,FIND("Я",SUBSTITUTE(A1," ","Я",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-2))-1) C1=MID(A1,LEN(B1)+1,FIND(" ",REPLACE(A1,1,LEN(B1)+1,"")))*1 D1=MID(A1,LEN(B1&C1)+2,FIND(" ",REPLACE(A1,1,LEN(B1&C1)+2,"")))*1 E1=MID(A1,LEN(B1&C1&D1)+3,LEN(A1))*1 これでいけるかも。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

「全部で項目は4つ」 「空白が入るのは商品名だけ」 という条件で、マクロを書いてみました。 Alt+F11でVBAの画面を立ち上げて、以下のマクロを貼り付けて実行してみてください。その際、 ・マクロの中で最初に"Sheet1"と書いてある部分は、実際のシート名に変更してください。 ・マクロの中で"A1"となっているのは、実際に分割したいデータが入っているセルの先頭の番地に変えてください。 ・そのセルの右4つにデータを分割して放り込むので、他のデータが入っている場合は4列分右に挿入しておいてください。 これでお望み通りの結果が得られるといいのですが。 Sub SplitItems()   Dim r As Range   Dim c As Variant   Dim i   With Worksheets("Sheet1")     For Each r In .Range("A1", .Range("A1").End(xlDown))       c = Split(r, " ")       r.Offset(0, 1).Value = ""       For i = 0 To UBound(c) - 3         r.Offset(0, 1).Value = r.Offset(0, 1).Value & " " & c(i)       Next       r.Offset(0, 2).Value = c(UBound(c) - 2)       r.Offset(0, 3).Value = c(UBound(c) - 1)       r.Offset(0, 4).Value = c(UBound(c))     Next   End With End Sub

allez
質問者

お礼

早速マクロを書いていただき、ありがとうございます。 マクロはあまり詳しくないですが、マクロがお勧めということなので、挑戦してみました。 見事にきれいに出来てびっくりです。 ただ、最初の条件には書き漏らしたのですが、元の文字列は基本は質問どおりなのですが、たまにヘッダー部分が5行くらい入ってるのです。 そこはブランクが一切無い行もあったりするので、 r.Offset(0, 2).Value = c(UBound(c) - 2)のところでいつもエラーでとまってしまいます。 回避の良い方法はあるでしょうか?

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

関数では無理でしょうね。3番目の条件がないなら 「データ」「区切り位置」で「カンマ...」を選んで「次へ」 「スペース」にチェックして「次へ」 列単位の表示形式を選択して「完了」 で出来ます。

allez
質問者

お礼

早速の回答ありがとうございます。 こんな方法もあるのですね。 単純な方法ですが、作業量が多くないのなら力技でいけるかもしれません。ありがとうございました。

関連するQ&A

  • エクセルのセル内の文字に対し抽出?したい

    エクセルのセル内の文字にたいしてのほかの列の合計を出したいです。説明が上手くなくてすみません。 ファイル添付したのでそれを見てもらえばわかります。 A列にある★のついたものの数量の合計(E列)が出したいです。 DGET関数だと、複数あった場合はだめですので、他の関数が知りたいです。 説明が上手くなくてすみません。 ご教授お願い致します。

  • Excelの長い文字列をスペースで区切ってセルに?

    長い文字列が、スペースで区切られています。 このスペースを区切りにしてセルに分割する方法を教えてください。

  • Excelでカンマ区切りの文字列をセルに分割する?

     住所録をExcelにコピーしたら、 カンマ区切りに一つのセルに入ってしまいました。 ◇カンマごとに一つのセルに分割して文字列を分ける。 ◇氏と名の間は半角スペースでカンマでは有りませんが、   二つのセルに分ける。 上記について分ける関数を教えてください。    

  • Excel VBA 「小計」と入力したら自動計算

    エクセルの小計の計算について質問いたします。    A列    B列      C列   D列     E列    F列 1 施設名  2      商品名,内容   1    単位     単価    金額(数量×単価) 3      商品名,内容   1    単位     単価    金額(数量×単価) 4                              小計     ●●●● ――――――――――――――――――――――――――――――――― 5 施設名 6      商品名,内容   1    単位     単価    金額(数量×単価) 7      商品名,内容   1    単位     単価    金額(数量×単価) 8      商品名,内容   1    単位     単価    金額(数量×単価) 9                              小計     ●●●● ―――――――――――――――――――――――――――――――――                                合計     ●●●● 施設名ごとに項目が複数あり、施設ごとに項目の数も違います。 これを施設ごとに●の所に小計を出したいです。 「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんなVBAを組めばいいのかわかりません。 理想としてはにE列に小計という文字を入れるとF列に自動で計が出るようにして、さらに小計の合計を最後の行のセルにだしたいです。。 さらに、見やすくなるように小計の下のセルにA~Fの間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • エクセルで数字を入れたらとなりのセルに文字が出るようにするにはどうしたらいいですか?

    小売店ですが仕入れの伝票の入力をしなければなりません。項目は・コード(六桁の数字)・商品名・数量・単価・金額です。 このコードナンバーを入れたら隣のセルに商品名そのまた隣のセルに単価と出るようにするにはどうしたらいいのでしょうか? 現在はすべてひとつづつ入力しています。 数量と単価を入れたら金額がでるようにだけは出来ましたがそれ以上がわかりません。 宜しくお願い申し上げます。

  • エクセルで見積書を作っているのですが・・・

    数量、単価、金額と欄がありまして、金額=数量×単価の数式を入れています。 数字が書き込まれている欄以外は、空白セルにしたいのですが、 数式を入れていると 0の表示が出るので ユーザー定義で 0;-0;;@"」"を入力し、空白にしました。 すると、数値の入っているところが 桁区切りスタイルができなくなってしまいました。 桁区切りもできて、空白にすることもできるような方法を ご存知の方、教えていただけませんでしょうか。 よろしくお願いします。

  • エクセルの文字列を空白で文字数を揃えたい

    皆様のお知恵を拝借したく書き込んでいます。 どうか宜しくお願いいたします。 エクセルにあるデータをカンマ区切りCSVに したいと思っております。 *例 1,1,1,3,1,2,11,・・・ これに数値を空白で埋めて四文字(0001,等)にさせたいのですが、 どのような方法が可能でしょうか? ・試したこと 1、サクラエディタでの正規表現 でも、置換後の文字列を動的に渡せるのかわからなくて失敗。 2、セルの表示形式 数値の桁数によって変化させる方法がわからず 3、エクセルマクロ LEN関数を使ってループさせれば可能? (時間がかかりそうです) 以上、宜しくお願いします。

  • エクセル 並べ替え 数字の文字列→漢字の文字列→空白セル の順にしたいです。

    いつも教えていただきありがとうございます。 【状況】 同じ列に以下のような文字列が並んでいます。 未回答 空白セル 20090208 20090210 未定 空白セル 20090101 【実現したいこと】 この時、 数字昇順(実際には日付) ↓ 文字列(未定、未回答) ↓ 空白セル の順に並べ替えをしたいです。 状況補足 ・全ての文字列はVLOOKUP関数の結果として表示されています。 ・この操作をマクロに組み込むことを考えています。 ・空白セルは目立たなければ他の記号などに置き換えても構いません。 上記内容可能でしょうか? お教えいただけましたら幸いです。 何卒よろしくお願いいたします。

  • エクセルで教えてください。空白が絡む計算です。

    エクセルで教えてください。 下記の表が有ります。     G    H      I      J 1 収入金額 単価 支払金額 現金残高 2             19,576 3        108 4        410 5        518   19,058 6 7        200 8        159 9       2,345 10       2,345 11       5,049   14,009 12 13 10,000         24,009 14 15       2,322 16        298 17       1,978 18       21,111 19         98 20         45 21         213 22         223 23        1,245 24              27,542   -3,533 25 Iの列はIの列で、Jの列はJの列で、それぞれ同じ関数を入れて、 この表を成り立たせたいです。 GとHの列は、手入力です。 その都度、sum関数を入れれば可能ですが、何か良い方法で 省力化したいです。 悩んでいるのは、H列の空白で区切られたところだけをI列で合計する、 G列に収入が合ったときは、J列の空白を飛ばして上にある値に加算、 G列に収入が無いときは、I列に合計を探し無いときは空白、有るときは 減算する、というからくりを関数でどうやればいいのか、わかりません。 単価は、その都度何行になるか分かりません。1行だったり10行だったり します。区切りは、必ず空白行を作るという事だけです。 宜しくお願いします。

  • 空白セルで区切られた文字列の種類を求める関数

    以下の条件を満たす excel関数がありましたら 教えてください。    A       B 1 りんご 2 みかん 3 りんご 4 なし 5 なし      3 ← 結果 6 7 なし 8 りんご 9 りんご     2 ← 結果 10 上記のようにA1からA10のセルに 文字列と空白が入っているとき、 空白で区切られたグループ内で、 文字列の種類が一体何種類になるのかを、 数えたいと思います。 ちなみに、関数はB列に入力したいのですが、 空白の一つ上のセルにだけ結果がでるように 表示させたいです。 説明不足でしたら申し訳ありません。 よろしくお願いいたします。

専門家に質問してみよう