リンクして引っ張ってきたデータを、
何文字目で改行するか,その都度決めることはできますか?
リンクしてくるデータが、毎回同じ文字数目で改行したいわけではなくて、
今回は8文字目と16文字目で折り返したい…
今回は9文字目と20文字目で折り返したい…など。
ついでに!!!
折り返した文字列の頭に1文字空白を挿入したいのですが。
そんな贅沢でワガママなことはできますか?
もしかして、申し上げている意味自体が不明でしょうか?

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

A 回答 (4件)

質問では、規則性はなさそうだし、折り返し数も2個以上かもしれないということで、指定した文字数で折り返すユーザー定義関数を作りました。

手順も書きましたのでチャレンジしてみて下さい。最初はみんな超初心者です。

折り返し箇所の指定は任意の個数可能です。長くなるので、9個目で改行、6個目で改行のように指定を昇順に指定しない場合は対応していません。

扱うのは全角文字の文章と想像しています。(半角でもOKですが)『ついでに』の先頭の空白は全角空白にしています。

使い方ですが、今、Bシートの該当セルは =VLOOKUP(・・・・・) となっていると思いますが、これを
=Orikaeshi(VLOOKUP(・・・・・),8,16) や
=Orikaeshi(VLOOKUP(・・・・・),9,20,26,32) のようにします。
また、該当セルの書式設定の配置は折り返して全体を表示するにチェックを入れておきます。うまくいけばいいえすが。

ツール→マクロ→Visual Basic Editor でVBE画面に移り、
挿入→標準モジュール で標準モジュールを挿入しそこに下記コードを貼り付けて下さい。

'指定文字数で折り返し。(先頭に全角空白を挿入)
Public Function Orikaeshi(Bunsyo As String, ParamArray aryNagasa() As Variant)
Dim L As Integer 'カウンタ
Dim mojisuu As Integer '1行文字数
Dim wkBunsyo As String '処理用変数

Bunsyo = " " & Bunsyo
For L = 0 To UBound(aryNagasa())
If L = 0 Then
mojisuu = aryNagasa(L)
Else
mojisuu = aryNagasa(L) - aryNagasa(L - 1)
End If
wkBunsyo = wkBunsyo & Left(Bunsyo, mojisuu) & vbLf
Bunsyo = Mid(Bunsyo, mojisuu + 1)
Next
wkBunsyo = wkBunsyo & Bunsyo
Orikaeshi = wkBunsyo
End Function
    • good
    • 0
この回答へのお礼

締め切ってしまってから気がつきました…。
改行ごとの頭に空白を入れたかったのでした。
説明不足で申し訳ありませんでした。
でも、他はすばらしくうまく行きました。

「改行ごとに頭に空白を入れるには?」として、新たに質問をしておきますので、
また機会がありましたらお世話してください。
ありがとうございました。

お礼日時:2001/08/05 14:53

どもども田吾作7です。



急いで書きます。

改行するからには、何らかの理由があるから改行するんですよね?

たとえばVlookUpでもってくるデータが文章で、「本日は晴天なり。だけど明日は雨。」というデータを持ってくるとします。
そのデータが表示では「本日は晴天なり。だ(改行)けど明日は雨。」とならないように、読点の次の位置から改行を行うという規則性を持たせたら、「本日は晴天なり。(改行)だけど明日は雨。」というようになります。


あっΣ( ̄ロ ̄lll) 待ち合わせの時間が・・・急がねば・・・

では出かけます。
    • good
    • 0

どもども田吾作7です。



リンクしたデータは基本的に同じデータ値を持つために、改行を任意でというのはできません。
[A1]の内容が1999/7/14 [B1]に数式=A1だったとします。その[B1]の表示を1999年7月14日にするのは可能です。これは同じデータ値なのですが、表示形式を加工することで実現可能です。

しかし、行いたいことは改行ですよね?改行は"あ"とか"E"とかと同様に"(改行コード")という文字がデータに必要になります。
[A1]の内容"abcdefg"を[B1]の内容"abcd(改行コード)efg"と変更するわけですから、データ値が変わることになります。ですのでVLOOKUP関数だけではムリだと思います。

改行するのに規則性はありますか?
それと今日は午後3時まで予定があるので、以後すぐの回答は出来ませんので、、、
_(._.)_

でわでわ
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます。
規則性とは…???

説明もできなくて、誠に申し訳ありません。

もうお分かりのように、私はパソコンに関して、超初心者なのです。
それでも教えていただけますか?

お礼日時:2001/07/14 12:44

どもども田吾作7です。



エクセルの話ですよね?

たぶん[A1]のセルに"abcdefg"と入っていて、[B1]のセルには数式[=A1]みたいになっていて、[B1]のセル内容を、任意の位置で改行して表示したいという意味ですか?

もうちょっと情報が・・・

この回答への補足

エクセルです。
Aシートに情報が入っていて、BシートにVlookupでデータをリンクさせています。
A1セルに”abcdefg”からはアナタ様のご想像通りです。
もしかして、まだ意味不明でしょうか…。

本当にド素人なので、誠にお手数をおかけしますが、
再度お返事をいただけませんでしょうか。

補足日時:2001/07/14 12:13
    • good
    • 0

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

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

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

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

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

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

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

Aベストアンサー

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

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

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

QVB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可

VB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可能でしょうか?
Label5.***文字数指定*** のようなコードがあれば助かるのですが、
どなたかご存知でしたら教えてください。
よろしくお願いいたします。


Label5.text="あいうえおかきくけこ"

【表示】
あいうえお
かきくけこ

Aベストアンサー

実際には 6文字以上あるかどうかを確認してからになると思います。
Dim txt As String = "あいうえおかきくけこ"
Label5.Text = txt.Insert(5, vbCrLf)
とか。

Qエクセルの関数で

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

Aベストアンサー

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

参考になりませんか?

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

Q「Alt+Enter」で折り返した文字列。1行目は何文字? 2行目は何文字?

セルの中に、「ALt+Enter」で複数行に折り返している文字列があって、
1行目は何文字で、折り返した2行目は何文字、3行目は何文字…
とカウントさせたいのですが…???
無理???
できましたら、具体的に記述して教えてください。

Aベストアンサー

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進める
MsgBox rw & "行目は " & pot - 1 & " 文字です"
moji = Mid(moji, pot + 1) '改行文字の次からを新たな検索対象にする

pot = InStr(moji, vbLf) '改行コードの位置は?
Wend
End Sub

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進め...続きを読む

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サイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

Qソフト改行文字が入らず困っています

 VB6環境で、テキストボックスにEM_FMTLINES(= &HC8)をSendMessageしソフト改行文字を入れた形でテキストを取得したいのですが、希に複数行入力されているにもかかわらず、ソフト改行文字が追加されない場合があります。

 MultiLineをtrueにしたテキストボックス「text1」とボタン「Command1」をフォームに貼り付け、以下のようなテストプログラムを作成してみました。(お見苦しいところありましたらすみません)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_FMTLINES = &HC8 'ソフト改行文字を設定/削除する定数

Private Sub Command1_Click()
Dim ret As Boolean
Dim str As String

ret = True

'ソフト改行文字を付加
Call SendMessage(Text1.hwnd, EM_FMTLINES, 1&, ByVal 0&)

str = Text1.Text
If InStr(str, vbCr & vbCr & vbLf) = 0 Then
MsgBox "失敗!"
ret = False
End If

'ソフト改行文字を削除
Call SendMessage(Text1.hwnd, EM_FMTLINES, 0&, ByVal 0&)

If ret = True Then
MsgBox "成功"
End If

End Sub

 テキストボックスの横幅をある程度狭くし、複数行になるよう適当に文字を入力しボタンをクリックすると、ほとんど成功するのですが、確かに20回に1回くらい失敗します。
 失敗した際は何度ボタンをクリックしても失敗します。逆に成功した文字列でなんどもボタンをクリックしても成功しか帰ってきません。

 試した環境
  WindowsXP Pro SP2、Windows2000 SP4

 なんとも法則性も見つからず、途方に暮れております。決方法やこんな事象ご存知でしたら助けて頂けないでしょうか。よろしくお願い致します。

 

 VB6環境で、テキストボックスにEM_FMTLINES(= &HC8)をSendMessageしソフト改行文字を入れた形でテキストを取得したいのですが、希に複数行入力されているにもかかわらず、ソフト改行文字が追加されない場合があります。

 MultiLineをtrueにしたテキストボックス「text1」とボタン「Command1」をフォームに貼り付け、以下のようなテストプログラムを作成してみました。(お見苦しいところありましたらすみません)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd A...続きを読む

Aベストアンサー

たぶん EM_SETWORDBREAKで EditWordBreakProcを登録してから
EM_FMTLINESを設定して使うのだろうと思いますよ

ちょっと試してみたんですが EditWordBreakProcを設定した後IDEがクラッシュしてしまう現象が出てますので確信はないんですけど ・・・

判断は vbCr vbCr vbLf の並びでチェックでいいと思います

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

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

QVB6のテキスト処理 さまざまな文字コード/改行で対応

VB6のテキスト処理で、Open InputとLine inputを使った場合に
文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。

改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか?

また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

Aベストアンサー

CRの場合は改行コードとして認識するかと思いますが、確認されていますか?

LFの場合は、Inputで読み込んでLFを認識しつつ取り出すしか内かと思います。

文字コードに関してはADODB.Streamについて調べてみてください。
UTF-16であればFileSystemObjectを使って読み込むことが出来ます。

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

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

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

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

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

Aベストアンサー

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

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

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



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


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

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

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

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

QAlt+Enterでセル内改行された文字をVBで認識させるには?

Excel2000です。

例えばA1に以下の様にAlt+Enterで改行された文字が書かれている時に
IF文を使ってマクロを実行したい場合、???にはどう書けば良いのでしょうか?
???に、1234Alt+Enter5678 と同じとさせる書き方です。
┌──┐
│1234│
│5678│
└──┘

Dim 認識 As String

認識 = Cells(1,1).Value
IF 認識 = ??? Then
・・・・実行したいマクロ

Aベストアンサー

"1234"+Chr(10)+"5678"です。


人気Q&Aランキング