B列にアルファベット、数字、カタカナのデータが混在していますが、
これを、カタカナ→アルファベット→数字の順で並び替えるには
どうしたらいいのでしょうか…
調べてもわかりませんでした(>_<)

質問者からの補足コメント

  • うーん・・・

    捕捉します
    A列  B列
    A001 Eコン    A001 クロ
    A001 1   → A001 Eコン
    A001 クロ A001 1

    のように、B列をカタカナ→アルファベット→数字の順にしたいです。
    カタカナは全て半角です。

      補足日時:2017/05/15 14:33
  • データが変わってもすぐ対応できるように、できればマクロを作成したいです

      補足日時:2017/05/15 14:40

A 回答 (2件)

・ソートを使えば簡単です。



 B列のどこでも1箇所セルを選択してツールボタンの
 「A-Z↓」か「Z-A↑」を押します。
 実は、このソートは数字だけでなく文字でも可能です

 途中にスペース行があると、スペース行の上までです。

 うまくいかない場合、
  一度ソートして、アルファベット、数字、カタカナの境目に空き行を入れ
  個々に再ソートしてから 空き行を削除すると出来ます。
    • good
    • 0

それぞれの文字には全角、半角があるけど、ソコントコどう考えてます?


え?何も考えてない?
    • good
    • 1

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

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

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

Q例えば、AさんからGさんまでがA列に縦に並んでいてB列に数字が入っています。B列にある数字の合計をA

例えば、AさんからGさんまでがA列に縦に並んでいてB列に数字が入っています。B列にある数字の合計をA-Gさん別々に出したいんですが簡単なvbaの記述方法はないでしょうか?
お願いします。

Aベストアンサー

こんばんは!

A列のA~Gさんは複数存在しているのでしょうか?
そうであればSUMIF関数で対応できると思いますが、VBAをお望みだというコトですので
一例です。

元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
標準モジュールにしてください。

Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
With Range(wS.Cells(2, "B"), wS.Cells(lastRow, "B"))
.Formula = "=SUMIF(Sheet1!A:A,A2,Sheet1!B:B)"
.Value = .Value
End With
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

A列のA~Gさんは複数存在しているのでしょうか?
そうであればSUMIF関数で対応できると思いますが、VBAをお望みだというコトですので
一例です。

元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
標準モジュールにしてください。

Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A:A...続きを読む

QExcelの列欄がアルファベットじゃなくて数字なっているので、アルファベットに直す方法を教えてください。

表題のとおり、Excelの行は通常どおり数字なのですが、列がアルファベットでなく数字になってしまっています。不便なため、列はアルファベットに戻したいです。
戻す方法ご存知の方教えてください。
OSはWindows XP で エクセルは2003です。

Aベストアンサー

 
オプションで「R1C1参照形式を使用する」のチェックを外してください。
 

Q列に並んだ数字群から一致する数字の行番号を抽出

下記のように B列に数字が縦に並んでいます。
28.11684736
28.12102177
28.12519803
28.12937616
28.13355614
28.13773798
28.14192168
28.14610723
28.15029464
28.15448391
28.15867503
28.16286801
28.16706285
28.17125955
28.1754581
この数字群から、例えば 28.15448391 に一致する数字の行を見つけて
その行番号を抽出するコードはどのように記述したらよいのでしょうか。
番号はA1のセルに置きます。
但し、条件があって
Excel2000~Excel2003の全てのバージョンに共通する
こと。そして列のデータ数が約10000程度はあることです。どこから
手をつけてよいのか判らないので、よろしくお願いします。
簡単な例では下記でもよさそうですが。より早く求めるには??? 
A= Range("B65536").End(xlUp).Row
I=0
Do
I=I+1
Loop until Cells(I,2).value=28.15448391 
Range("A1")=I

下記のように B列に数字が縦に並んでいます。
28.11684736
28.12102177
28.12519803
28.12937616
28.13355614
28.13773798
28.14192168
28.14610723
28.15029464
28.15448391
28.15867503
28.16286801
28.16706285
28.17125955
28.1754581
この数字群から、例えば 28.15448391 に一致する数字の行を見つけて
その行番号を抽出するコードはどのように記述したらよいのでしょうか。
番号はA1のセルに置きます。
但し、条件があって
Excel2000~Excel2003の全てのバージ...続きを読む

Aベストアンサー

こんにちは。

そのような内容は、別に、VBAでなくても良さそうですが。

=IF(ISERROR(MATCH(A1,B:B,0)),"Not Found",MATCH(A1,B:B,0))

VBAなら、そのまま移植すればよいと思います。
以下は、Excel 97 ~ 2007 まで動作可能です。
ただし、見つけるデータは一つという条件下です。

'標準モジュール

Sub Test1()
Dim ret As Variant
Dim mDat As Variant
mDat = Range("A1").Value
If VarType(mDat) <> vbDouble Then Exit Sub
ret = Application.Match(mDat, Columns(2), 0)
If Not IsError(ret) Then
 MsgBox ret & "行目に見つかりました。", vbInformation
Else
 MsgBox mDat & "は、見つかりません。", vbCritical
End If
End Sub

こんにちは。

そのような内容は、別に、VBAでなくても良さそうですが。

=IF(ISERROR(MATCH(A1,B:B,0)),"Not Found",MATCH(A1,B:B,0))

VBAなら、そのまま移植すればよいと思います。
以下は、Excel 97 ~ 2007 まで動作可能です。
ただし、見つけるデータは一つという条件下です。

'標準モジュール

Sub Test1()
Dim ret As Variant
Dim mDat As Variant
mDat = Range("A1").Value
If VarType(mDat) <> vbDouble Then Exit Sub
ret = Application.Match(mDat, Columns(2), 0)
If Not IsError...続きを読む

QB列にA列の数字をかけた数字を出したい

B列の各行に3(or2or1)を入力をしたらA列の数字に0.3(2なら0.2,1なら0.1)
をかけて小数点第一以下は切り捨てをするマクロを組みたいのですができません。

例  A5に4581と入力されていてB5に3と入力をしたらB5が1374と変換される

ようにしたいです;どのようなマクロを組めばよいでしょうか。。。
環境はWINDOWSVISTAのEXCEL2007ですm(__)m

Aベストアンサー

>B列の各行に3(or2or1)を入力をしたらA列の数字に…

シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub Worksheet_Change(byval Target as excel.range)
 dim h as range
 on error resume next
 for each h in application.intersect(target, range("B:B"))
  if h.value = 1 or h.value = 2 or h.value = 3 then
   application.enableevents = false
   cells(h.row, "A") = application.rounddown(cells(h.row, "A") * h * 0.1, 0)
   application.enableevents = true
  end if
 next
end sub

ファイルメニューから終了してエクセルに戻る
A列に数字を準備し、B列に1か2か3を記入する。

>B列の各行に3(or2or1)を入力をしたらA列の数字に…

シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub Worksheet_Change(byval Target as excel.range)
 dim h as range
 on error resume next
 for each h in application.intersect(target, range("B:B"))
  if h.value = 1 or h.value = 2 or h.value = 3 then
   application.enableevents = false
   cells(h.row, "A") = application.rounddown(cells(h.row, "A") * h * 0.1, 0)
   appli...続きを読む

QExcelで、自列に数字がる行の左端列の数字を加えるには?

下表で、左端は行番号、最上行は列名で、-は空白セルを表しています。
例えば、(1)=40行のGには、G列に数字がある行のF列の数字を足す式を求めています。

+FGHI
719--
81---
951--
102-5
110--5
121---

40(1)(2)  (3)

(1)=G40=1+5
(2)=H40=2
(3)=I40=0
なお、スペースが詰まった表示になりますが、Excel表をここで表示する方法があればそれも教えて下さい。以上

Aベストアンサー

40行目のG列のセル、H列のセル、I列のセルに
それぞれの列の1~39行の間で"-"以外の値が入っている行のF列のセルの値の合計を表示する方法を知りたい
という質問でよろしいでしょうか?
合計を求める際に条件をつけることのできるSUMIF関数というものがあります。
SUMIF関数には3つの引数があり、1つ目の引数には条件をつける範囲、2つ目の引数にはその条件を、3つ目の引数には合計を求める範囲を渡して使用します。
例えば今回の場合、G40には=SUMIF(G1:G39,"<>-",F1:F39)が入ります。


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

人気Q&Aランキング

おすすめ情報