人に聞けない痔の悩み、これでスッキリ >>

エクセルの表示形式についての質問です。

011A 011B 020 322

というような数字を打ち込みます。
そのとき、表示形式を文字列にするとセルの左上に緑の三角印が出て目障りなので
「ユーザー定義」で「種類」を「000」としました。

ところが、セルを昇順に並べ替えると

020 322 011A 011B

となってしまいます。
そこで、どうしてだろう?とセルの書式設定を確認すると
表示形式の「分類=その他」「種類=Codigo Postal」「ロケール=ポルトガル語」となっていました。
その後、何度やり直しても同じ結果になります。
これはこういうものなんでしょうか?

011A 011B 020 322

というふうに並べることはできませんか?

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

A 回答 (2件)

こんにちは。



セルの書式設定と並べ替えは関係ありません。

ExcelのVerion は分かりませんが、

>左上に緑の三角印が出て目障りなので
>「ユーザー定義」で「種類」を「000」  ←これ自体は良いのですが、

ツール-オプション-エラーチェック
 文字列として保存されている数値(N)

をオフにすればよいです。一般的には、そのようなエラー表示は不要だと思います。

それで、並べ替えは、
やはり分離しないといけませんね。

B列
=IF(ISNUMBER(A1),TEXT(A1,"000"),LEFT(A1,LEN(A1)-1))

C列
=SUBSTITUTE(TEXT(A1,"000"),B1," ")

それで、データ-並べ替えで、範囲全体が選択されると思いますが、B列、C列の順に、タイトル行もデータとして並べ替えをします。途中、何かのメッセージが出てきますが、数値に見えるものは、数値として並べ替えとします。

並べ替えに関しては、もう少し良いアイデアを出してくれる方もいらっしゃると思います。

ところで、

>表示形式の「分類=その他」「種類=Codigo Postal」「ロケール=ポルトガル語」となっ

のトラブルは、以前にもここで出ていたことがあります。ただ、それに関しては、特に、直しようがありません。

http://support.microsoft.com/kb/418194/ja
Excel で特定のユーザー定義表示形式を設定するとロケールが変更される

「# セルの表示形式をすべて "0" で構成された "000" のようなユーザー定義書式を設定すると、再度設定を確認したときに、表示形式が [その他] となりロケールが変更されて表示される場合があります。#」
    • good
    • 0
この回答へのお礼

すごく良くわかりました。
あの鬱陶しい三角を消す方法も教えていただいて嬉しいです。
ありがとうございました。

お礼日時:2007/06/20 13:19

地域の設定がおかしくなっているのではないでしょうか?


[コントロールパネル]の中の[地域のオプション]を確認してみてください。

この回答への補足

「地域と言語のオプション」を確認しましたら
「地域オプション=日本語」「言語→詳細→設定→規定の言語=日本語」「詳細設定=日本語」となっています。

他に確認すべきところはあるでしょうか?

補足日時:2007/06/20 11:21
    • good
    • 0

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

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

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

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

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

Qポルトガル語などの特殊な文字の入力の仕方

ポルトガル語などの特殊な文字の入力の仕方はどうしたらよいのでしょうか?よろしくお願いします。

Aベストアンサー

WORDでしたら、次のようにします。直接入力(半角入力)にして、例えば、

aに^→「Ctrl」+「^」を押してから「a」

aにアクセント→「'」(「7」のシフト)がアクセントに見立てられています。「Ctrl」+「'」(すなわち、「Ctrl」+「Shift」+「7」)を押してから「a」

逆向きのアクセント(`)は「@」のシフト

ちなみにドイツ語のウムラウトは、「:」を見立てています。

ポルトガル語などとのご質問ですが、「など」については、WORDの「ヘルプ」で、「ウムラウトの入力方法」で「質問」のうえ、「ショートカットキーを・・・」をクリックしてください。詳細を知ることができます。

本格的にポルトガル語を入力する場合や、WORD以外で使う場合は、コントロールパネルの「地域と言語のオプション」の「言語」バーの「詳細」をクリック、「設定」バーの「追加」をクリック、「ポルトガル語(ポルトガル)」もしくは「ポルトガル語(ブラジル)」を選択してください。

言語バーの「JP」をクリックしてポルトガル語に変えると、いわばポルトガル語対応パソコンになります。

キーボードは、スタートから追った、アクセサリ→ユーザー補助→スクリーンキーボード で入力したい文字のキー位置を知ることができます。

WORDでしたら、次のようにします。直接入力(半角入力)にして、例えば、

aに^→「Ctrl」+「^」を押してから「a」

aにアクセント→「'」(「7」のシフト)がアクセントに見立てられています。「Ctrl」+「'」(すなわち、「Ctrl」+「Shift」+「7」)を押してから「a」

逆向きのアクセント(`)は「@」のシフト

ちなみにドイツ語のウムラウトは、「:」を見立てています。

ポルトガル語などとのご質問ですが、「など」については、WORDの「ヘルプ」で、「ウムラウトの入力方法」で「質問」のうえ、「ショー...続きを読む

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

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

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

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

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QExcel セルの書式設定(ロケール)

セルの書式設定(日付・時刻)をしようと、右クリックでメニューを表示させ、日付や時刻を選択するとほぼ毎回必ずといっていいほどロケールがアイスランド語やウルドゥー語になっていて、その度に英語(米国)に変更しなおしています。これはとても面倒なのでデフォルトで英語(米国)にしたいのですが、何か方法はあるのでしょうか?

Aベストアンサー

WINDOWSのバージョンが分かりませんが、XPで説明させていただきます
コントロールパネルの中に、”地域と言語のオプション”というアイコンがあると思います。これを開いて、地域オプションというタブがあると思いますが、アイスランド語が選ばれてないです、この選択ボックスで英語を選べばできるはずですが

QVBAマクロで、図形等のオブジェクトを選択(特定)する方法ってありますか

こんにちは。VBAマクロを少しかじっています。
顔写真付きの従業員の検索システムを作りました。名前を入力(選択)したら、データシートから職員コード、住所、電話番号などの情報を検索し検索画面に表示します。この際、別のシートに顔写真を貼り付けたもの(1セルに1枚。セルに従業員名を入力してある。)から、VLOOKUP関数を使ってセル照会することで、画像も同時に表示することができます。
別の職員に切り換えたり、クリアする場合の画像の処理は、削除用のシートを用意し、そこにセルごと移動し、終了時にシートごと削除する方法をとりました。(当然、確認用のダイアログボックスが表示されます。)
前置きが長くなりましたが、問題は、用済みの画像を選択するプロシージャがあれば、あえて削除用のシートを用意する必要はありません。セルの場合は、Rangeプロパティやcellsプロパティで特定できますが、画像などのオブジェクトをセル番地などを使って特定する方法ってあるのでしょうか。
因みに、画像の選択処理を、マクロ記録でプロシージャを作成したら、
ActiveSheet.Shapes("Picture 1").Select などとなります。
よろしくお願いします。

こんにちは。VBAマクロを少しかじっています。
顔写真付きの従業員の検索システムを作りました。名前を入力(選択)したら、データシートから職員コード、住所、電話番号などの情報を検索し検索画面に表示します。この際、別のシートに顔写真を貼り付けたもの(1セルに1枚。セルに従業員名を入力してある。)から、VLOOKUP関数を使ってセル照会することで、画像も同時に表示することができます。
別の職員に切り換えたり、クリアする場合の画像の処理は、削除用のシートを用意し、そこにセルごと移動し、終了時...続きを読む

Aベストアンサー

検索シートにシェイプが1つしかなければ
ActiveSheet.Shapes(1).Select
で選択
ActiveSheet.Shapes(1).Delete
で削除できます。

Qエクセル関数>参照ファイル名をセルから呼び出す

別ファイル(ブック)のセルを表示させたいのですが、例えば
=[あいうえお.xls]かきくけこ!$A$5
とせずに、
ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか?

関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。

よろしくお願い致します。

Aベストアンサー

A1に「あいうえお.xls」があるとき
 =INDIRECT("[" & A1 & "]かきくけこ!$A$5")
でよいでしょう。
ただし「あいうえお.xls」が開いている必要があります。(#REF!エラーになるため)

A1に入力されたブック名が開いていないなら、ブックを開くようにするのであればマクロが必要です。ブック名を入力しているのがSheet1だとしたら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて保存して下さい。
するとINDIRECT関数を入力したブックを開くときに、A1セルのブックも開くようになります。ただし下から3行目のファイルパスは修正が必要です。

Sub Auto_open()
Dim wb, mybk As Workbook
Set mybk = ThisWorkbook
For Each wb In Workbooks
  If wb.Name = Sheets("Sheet1").Range("A1").Value Then
    Exit Sub
  End If
Next wb
Workbooks.Open "C:\Temp\" & Sheets("Sheet1").Range("A1").Value
mybk.Activate
End Sub

A1に「あいうえお.xls」があるとき
 =INDIRECT("[" & A1 & "]かきくけこ!$A$5")
でよいでしょう。
ただし「あいうえお.xls」が開いている必要があります。(#REF!エラーになるため)

A1に入力されたブック名が開いていないなら、ブックを開くようにするのであればマクロが必要です。ブック名を入力しているのがSheet1だとしたら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて保存して下さい。
するとINDIREC...続きを読む

QVBAでブック名の拡張子を除去してシートにコピー

VBA初心者でコード作成で困っております。

下記の通りコードを組みましたが、シート名をブック名に変更して
保存したいのですが、このコードですと拡張子までついてしまいます。
拡張子を除去するためにはどうすればよいでしょうか?

アドバイス宜しくお願い致します。

Sub test()

'シート名の変更

Dim MyPath As String

Dim MyFile As String

Dim Wb As Workbook


MyPath = "C:\TEST\"

MyFile = Dir(MyPath & "*.xlsx")


Do While MyFile <> ""

Set Wb = Workbooks.Open(MyPath & MyFile)

ActiveSheet.Name = ActiveWorkbook.Name

Application.DisplayAlerts = False

Wb.Save

Application.DisplayAlerts = True

Wb.Close (False)

MyFile = Dir()

Loop

End Sub

VBA初心者でコード作成で困っております。

下記の通りコードを組みましたが、シート名をブック名に変更して
保存したいのですが、このコードですと拡張子までついてしまいます。
拡張子を除去するためにはどうすればよいでしょうか?

アドバイス宜しくお願い致します。

Sub test()

'シート名の変更

Dim MyPath As String

Dim MyFile As String

Dim Wb As Workbook


MyPath = "C:\TEST\"

MyFile = Dir(MyPath & "*.xlsx")


Do While MyFile <> ""
...続きを読む

Aベストアンサー

拡張子が .xlsx と決まっているなら

ActiveSheet.Name = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)

では?

Qセルの書式設定が勝手に変わってしまう

XP SP3 Excel2007なんですが、まっさらのシートでも例えばB1に20:00、C1に3:00、D1に7:00と入力後E1に100と入れると勝手に書式がユーザー定義に変わってしまい時間表示になってしまいます。とても入力しずらく原因が分かりません、分かる方がいましたら宜しくお願いします。

Aベストアンサー

エクセルが判断してそのようにさせているのですね。
どうしても避けたいのであれば「Office」ボタンをクリックして右下にある「エクセルのオプション」ボタンをクリックします。
「詳細設定」の項目から「編集設定」にある「データ範囲の形式および数式を拡張する」のチェックを消します。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

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

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QChr(13)とChr(10)の違いは?

myStr = Replace(myStr, Chr(13), "")

myStr = Replace(myStr, Chr(10), "")

で、改行を置換しているのですが、どちらかでも改行できる時や
どちらかじゃないと改行できない時があります。

そもそもChr(13)とChr(10)の違いはなんでしょう?
どちらも改行ですよね?
何が違うのでしょう?

Aベストアンサー

こんにちは。お邪魔します。

Chr(10) ・・・ ラインフィード ・・・ 略して、Lf

Chr(13) ・・・ キャリッジリターン ・・・ 略して、Cr

改行文字に何を使うのかはアプリケーションが規定するものです。

Win・Office環境では
上のふたつを組合わせた改行[CrLf]を使うことが多いと思います。
次に[Lf]、そして、[Cr]

なので、ソースによっては
  myStr = Replace(myStr, vbCrLf, "")
と、一発で置換できるケースも少なくないです。
■ソースごとに改行文字を確認しておくことから始めた方が有利になります。■

ひとまず、VBAでの改行の扱いに慣れるには
■VBAで用意された文字列定数について知っておいた方がよいと思います。■
 VBE(Visual Basicの編集画面)が開いている状態で、
 F2 キー → オブジェクトブラウザー起動
 検索小窓に、vbCrLf、とタイプして、検索ボタン
 VBA.Constantsクラスのメンバーが表示され
 その中にすべての改行文字(文字列定数)が含まれています。
 そのまま、F1 キーでヘルプを表示します。
詳しい説明はヘルプを読む方がいいでしょう。

実践的な話として、
Chr(10)やChr(13)は関数の戻り値です。
対して、
vbLfやvbCr(またはvbCrLf)は定数です。
定数で済ませられるなら、定数の方が何かと有利です。
定数の名前は略号ですから、実態をイメージし易くなっています。
定数の扱いに慣れることをお奨めします。
例)
  myStr = Replace(myStr, vbLf, "")
  myStr = Replace(myStr, vbCr, "")
  myStr = Replace(myStr, vbCrLf, "")

もしも文字列定数を先に覚えていたなら、疑問にもならなかったのかも知れませんね。
私の場合は、改行の何たるかを覚える前に文字列定数覚えていて、困ることありませんでしたから。

以上、ご参考まで。

こんにちは。お邪魔します。

Chr(10) ・・・ ラインフィード ・・・ 略して、Lf

Chr(13) ・・・ キャリッジリターン ・・・ 略して、Cr

改行文字に何を使うのかはアプリケーションが規定するものです。

Win・Office環境では
上のふたつを組合わせた改行[CrLf]を使うことが多いと思います。
次に[Lf]、そして、[Cr]

なので、ソースによっては
  myStr = Replace(myStr, vbCrLf, "")
と、一発で置換できるケースも少なくないです。
■ソースごとに改行文字を確認しておくことから始めた方が有利...続きを読む


人気Q&Aランキング